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

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 中文字幕亚洲无线码| 破了亲妺妺的处免费视频国产| 国产av无码专区亚洲av果冻传媒| 国产亚洲午夜精品| 性做久久久久免费观看| 亚洲国产成人久久综合| 四虎在线免费播放| 国产精品亚洲精品久久精品| 国产一精品一aⅴ一免费| 亚洲aⅴ天堂av天堂无码麻豆| 免费看美女被靠到爽| 香蕉视频亚洲一级| 久久久久亚洲精品男人的天堂| 精品免费AV一区二区三区| 亚洲精品网站在线观看不卡无广告| 一级A毛片免费观看久久精品 | 国产情侣激情在线视频免费看| 亚洲人成777在线播放| 毛片免费视频播放| 国产亚洲综合久久| 亚洲国产三级在线观看| 午夜精品免费在线观看| 亚洲粉嫩美白在线| 亚洲伊人久久综合影院| 国产免费一区二区视频| 亚洲av无码久久忘忧草| 天堂在线免费观看中文版| 黄页网址大全免费观看12网站| 亚洲爆乳无码专区| 91成人免费观看网站| 亚洲欧美在线x视频| 国产成人亚洲精品青草天美| 黄色网址免费观看| 麻豆69堂免费视频| 久久久久久亚洲Av无码精品专口| 成人免费午夜在线观看| 91精品全国免费观看青青| 亚洲一区在线视频| 国产亚洲AV夜间福利香蕉149| 曰批视频免费40分钟试看天天| 国产精品亚洲а∨天堂2021|