兩個Integer值比較不相等問題

    今天寫程序碰到一個非常有趣的問題,兩個值都爲15比較後居然不相等。記錄如下:

1.第一種情況:

Integer a = 15;
Integer b = 15;
System.out.println(a==b);

結果爲true;

2.第二種情況:

下面看下面種情況:

Integer a = new Integer(15);
Integer b = 5;//這裏b=new Integer(15);結果同樣爲false
System.out.println(a==b);

結果爲false。


2.第三種情況:

Integer a = 129;    
Integer b = 129;    
System.out.println(a == b);  

結果爲false,那這種情況與第一種有什麼區別了,唯一的區別就是 129大於15.對於Integer類型來說,值在-128-127,用==比較是一致的,超過這個區間就不行了。那麼第二種情況爲什麼爲false了,原來Integer b = 5,在此涉及了裝箱過程,即爲Integer b = Integer.valueOf(5),所以就不等了。

我們可以看下面中情況:

Integer a = Integer.valueOf(5);
Integer b = 5;
System.out.println(a==b);

這種情況爲true,就驗證了上面的解釋。

所以以後比較對象就最好用equals,或者全部使用valueOf();


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章