<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 西門町學士 閱讀(334) 評論(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

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

    主站蜘蛛池模板: 亚洲欧洲校园自拍都市| 久久亚洲国产视频| 亚洲国产精品99久久久久久| 免费观看无遮挡www的小视频| 国产成人亚洲综合无码精品 | 亚洲Av熟妇高潮30p| 西西人体免费视频| 精品国产_亚洲人成在线高清| 久久av免费天堂小草播放| 亚洲偷自拍拍综合网| 一级特黄a免费大片| 中文字幕中韩乱码亚洲大片| 一边摸一边桶一边脱免费视频| 亚洲无码黄色网址| 国产精品区免费视频| 青青草原精品国产亚洲av| 国产91免费视频| 亚洲精品天堂无码中文字幕| 日本不卡视频免费| 国产日韩久久免费影院| 亚洲AV无码久久寂寞少妇| 91精品免费国产高清在线| 亚洲第一第二第三第四第五第六| 又色又污又黄无遮挡的免费视| 一个人看的hd免费视频| 亚洲国产日韩一区高清在线| 一本无码人妻在中文字幕免费| 国产偷国产偷亚洲高清在线| 久久久青草青青国产亚洲免观| 91精品国产免费网站| 亚洲日韩在线中文字幕综合 | 手机看片久久国产免费| 一级人做人爰a全过程免费视频 | 国产一级一片免费播放i| 亚洲免费视频一区二区三区| 亚洲乱亚洲乱淫久久| 四虎成人免费网站在线| 精品久久久久久国产免费了| 亚洲第一页在线播放| 亚洲国产精品无码久久九九| 日韩免费无码一区二区三区 |