<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 8,  comments - 6,  trackbacks - 0

    1.1  在Java中沒有for:使用增強的for循環 

    Java5+

    在一些編程語言中,通過列表或數組可以非常方便地進行遍歷,通過一個循環即可逐個遍歷項并將該項賦值一個局部變量從而實現自動循環。我曾經告訴過一個同事我認為Java中的“for”循環功能是不完全的,因為它沒有“for-each”。我的朋友也是一個有經驗的Java開發人員,他的回答是“你瘋了嗎?,在Java中當然有for!”在此之后很長一段時間里他為此而不斷地嘲笑我,并定期地提醒我在Java中存在for(為了防止我遺忘此事) 。但是我有一個好消息要告訴他和所有Java開發人員:目前在Java中有了真正的for!

    考慮這樣一種情況,你希望對一個整型對象集合(如java.util.ArrayList)中的所有數值求和。你很可能編寫過類似于下面這樣的代碼:

    ArrayList theList = new ArrayList();
    theList.add(new Integer(2));
    theList.add(new Integer(3));
    theList.add(new Integer(5));
    theList.add(new Integer(7));
    int sum = 0;
    // The old way to iterate
    for (Iterator iter = theList.iterator(); iter.hasNext(); ) {
    Integer x = (Integer) iter.next();
    sum = sum + x.intValue();
    }
    System.out.println("The sum is " + sum);

    這段代碼多麻煩啊,難道編譯器不應該知道你正在進行迭代嗎?畢竟這是一個for循環,不是嗎?而在Java 5中,增強的for循環現已支持集合對象。因此不再需要使用迭代器。在下面的修訂的代碼中,一個for循環通過列表進行迭代并顯示出每個值:

    ArrayList<Integer> theList = new ArrayList<Integer>();
    theList.add(2);
    theList.add(3);
    theList.add(5);
    theList.add(7);
    int sum = 0;
    // new Java 5 iteration syntax
    for (Integer item : theList) {
    sum = sum + item;
    }
    System.out.println("The sum is " + sum);

    for循環定義了一個叫做item的局部變量,在每次迭代過程中,它將得到列表中的下一個值。除了完美的for循環語法外,此代碼在以下兩個方面也不同于過去的Java代碼。

    使用了泛型

    上面帶有尖括號的語法是Java 5新增加的泛型特性。泛型允許為一些具體類型的對象定義類,但是直到創建該類的一個實例時才能知道具體的類型。編譯器將會強迫執行類型檢查。在這個示例中,ArrayList是一個特殊的類,對于add方法它只接受整數(并只從它的Iterator的next方法中返回整數)。這意味著當從列表中檢索對象時不需要強制類型轉換,可以立即將它們作為Integer實例來對待。不使用泛型時,仍可以使用新的for循環語法,但需要將Object強制轉換成Integer。在1.4節中將我們更詳細地介紹泛型。

    整型對象到整型數值的自動轉換

    在Java 5中,可以將Integer對象作為int來對待。編譯器將自動執行從int到Integer對象的轉換(反之亦然),此過程稱為自動裝箱(autoboxing)。當循環中得到一個Integer對象時,可以將它與一個int值相加而不需要執行顯式的轉換。
    新的for語言也適用于數組:

    int[] theList = new int[] {2,3,5,7};
    int sum = 0;
    for (int x : theList) {
    sum = sum + x;
    }
    System.out.println("The sum is " + sum);
    這種新的語法的確使代碼變得更加易讀和緊湊。但還不能完全放棄迭代器,至少暫時是這樣,因為還有很多開發人員沒有將他們的JDK升級到版本5。


    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿(1)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 两个人看的www免费视频中文| 日韩精品视频免费观看| 曰批全过程免费视频观看免费软件| 亚洲国产精品热久久| 亚洲男人天堂2020| 日美韩电影免费看| 我的小后妈韩剧在线看免费高清版 | 婷婷久久久亚洲欧洲日产国码AV | 亚洲人成电影青青在线播放| 国产亚洲综合久久系列| 免费a级毛片18以上观看精品| 99久久综合国产精品免费| 亚洲精品免费在线观看| 三年片在线观看免费西瓜视频| 日日摸夜夜添夜夜免费视频| 亚洲色大成WWW亚洲女子| 亚洲欧洲尹人香蕉综合| 亚洲Aⅴ无码专区在线观看q| 亚洲无av在线中文字幕| 亚洲乱码国产一区网址| 波多野结衣中文一区二区免费 | 亚洲av无码国产综合专区| 亚洲国产精品lv| 精品亚洲综合在线第一区| 久久久久一级精品亚洲国产成人综合AV区 | 日韩精品免费电影| 成人毛片免费视频| 成人无遮挡裸免费视频在线观看| 亚洲免费人成视频观看| 亚洲美女视频免费| 亚洲免费人成视频观看| 国产成人午夜精品免费视频| 亚洲免费闲人蜜桃| 18禁免费无码无遮挡不卡网站| 永久看日本大片免费35分钟| 亚洲成人免费网址| 黄页免费的网站勿入免费直接进入| 青青在线久青草免费观看| 久久久久久国产a免费观看黄色大片| 7723日本高清完整版免费| 国产高清免费视频|