<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)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 四虎一区二区成人免费影院网址 | 精品一区二区三区免费视频| 成人免费无遮挡无码黄漫视频| 亚洲福利一区二区精品秒拍| 91香焦国产线观看看免费| 亚洲∧v久久久无码精品 | 日日麻批免费40分钟无码| 亚洲成AV人片一区二区密柚| 国产色无码精品视频免费| 亚洲精品~无码抽插| 国产免费无码一区二区| 午夜亚洲国产理论秋霞| 最近最好最新2019中文字幕免费| 亚洲av无码精品网站| 久久久久久国产精品免费无码| 亚洲毛片免费视频| 成人免费在线视频| 国产成人va亚洲电影| 中文字幕不卡亚洲 | 亚洲精品理论电影在线观看| 日本一道高清不卡免费| 曰批全过程免费视频免费看| 综合亚洲伊人午夜网| 91精品手机国产免费| 中文字幕亚洲精品无码| 亚洲国产电影av在线网址| 久久精品国产这里是免费| 亚洲AV一二三区成人影片| 四虎在线播放免费永久视频| 中文字幕成人免费高清在线视频| 亚洲高清视频在线播放| 国产美女无遮挡免费视频| 免费久久人人爽人人爽av| 亚洲男人的天堂久久精品| 亚洲精品成人片在线观看| 美丽姑娘免费观看在线观看中文版 | 亚洲中文字幕一二三四区| 色噜噜亚洲精品中文字幕| 巨波霸乳在线永久免费视频 | 亚洲 综合 国产 欧洲 丝袜| 久久精品国产免费一区|