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

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

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

    Just Java IT

    西門町學士關于Java的隨便一說而已……

    Tiger pitfall

    在SDN踩到一個Tiger的pitfall:
    package sdn;

    import java.util.ArrayList;

    public class BoxingEquality {
       
        /** Creates a new instance of BoxingEquality */
        public BoxingEquality() {
        }
       
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            int i = 1;
            int j = 1;
            ArrayList<Integer> list = new ArrayList<Integer>();
            list.add(i);
            list.add(j);
            System.out.printf("It is %b that i == j.\n", (i==j));
            System.out.printf("It is %b that list.get(0) == list.get(1).\n", (list.get(0)==list.get(1)));
            System.out.printf("It is %b that list.get(0).equals(list.get(1)).",            list.get(0).equals(list.get(1)));
        } 
    }

    輸出結果出乎意料:
    It is true that i == j.
    It is true that list.get(0) == list.get(1).    // WHY???
    It is true that list.get(0).equals(list.get(1)).

    然而,僅僅將 i 和 j 的值改成1000:
    int i = 1000;
    int j = 1000;
    就這一個改動后輸出結果雖然符合了java的思維方式,但在這個context中卻更顯得怪異:
    It is true that i == j.
    It is false that list.get(0) == list.get(1). // Oops
    It is true that list.get(0).equals(list.get(1)).

    Sun給出的解釋:
    The primitives are equal and the values of the boxed ints are equal. But this time the ints point to different objects. What you have discovered is that for small integral values, the objects are cached in a pool much like Strings. When i and j are 2, a single object is referenced from two different locations. When i and j are 2000, two separate objects are referenced. Autoboxing is guaranteed to return the same object for integral values in the range [-128, 127], but an implementation may, at its discretion, cache values outside of that range. It would be bad style to rely on this caching in your code.

    呵呵,要不注意說不定還真中招了!

    posted on 2006-03-16 22:03 西門町學士 閱讀(333) 評論(4)  編輯  收藏 所屬分類: Java

    Feedback

    # re: Tiger pitfall 2006-10-21 09:56 11

    11111111111111111  回復  更多評論   

    # re: Tiger pitfall 2006-10-21 09:58 11

    不好意思!剛才發錯了!  回復  更多評論   

    # 你好! 2006-10-21 10:04 11

    由于最近在做一個在線購物系統!所以看到你的主頁后就來想想你這個留言版是怎么實現的~!:)  回復  更多評論   

    # 關于你的留言版的實現原理 2006-10-21 10:07 11

    由于最近在做一個在線購物系統!所以看到你的主頁后就來想想你這個留言版是怎么實現的~!:)   回復  更多評論   

    主站蜘蛛池模板: a级毛片在线免费看| 国产精品免费看久久久| 亚洲永久永久永久永久永久精品| 国产精品无码一区二区三区免费 | 最近的免费中文字幕视频| 国产成人一区二区三区视频免费 | 亚洲精品无码成人片久久| 成人亚洲网站www在线观看| 全免费a级毛片免费看无码| 美女裸身网站免费看免费网站 | 亚洲Aⅴ无码专区在线观看q| 国产一区在线观看免费| 国产精品免费视频一区| 暖暖日本免费在线视频| 日本一道本高清免费| 全黄性性激高免费视频| jlzzjlzz亚洲乱熟在线播放| 亚洲无码黄色网址| 久久久久亚洲精品无码蜜桃| 亚洲一区二区三区电影| 久久精品国产亚洲AV忘忧草18| 亚洲AV无码国产精品色| 免费看一级一级人妻片| 西西人体免费视频| 国产精品久久永久免费| 四只虎免费永久观看| 亚洲国产精品VA在线观看麻豆| 亚洲视频网站在线观看| 亚洲欧洲无卡二区视頻| 国产精品一区二区三区免费| 亚洲网站在线免费观看| 国产女高清在线看免费观看| 久久亚洲国产欧洲精品一| 亚洲成人动漫在线观看| 无码的免费不卡毛片视频 | 亚洲视频在线观看2018| 成人久久久观看免费毛片| 无码av免费毛片一区二区| 久久久久亚洲av毛片大| 亚洲a∨无码一区二区| 亚欧色视频在线观看免费|