integer a = 1;
integer b = 1;
integer c = 500;
integer d = 500;
system.out.println(a == b);
system.out.println(c == d);
integer aa=new integer(10);
integer bb=new integer(10);
int cc=10;
system.out.println(aa == bb);
system.out.println(aa == cc);
答案是true
false
false
true
integer a = 1;是自動裝箱會呼叫interger.valueof(int)方法;該方法注釋如下:
this method will always *** values in the range -128 to 127 inclusive, and may *** other values outside of this range.
也就是說integercache類快取了-128到127的integer例項,在這個區間內呼叫valueof不會建立新的例項。
integer型別在-128–>127範圍之間是被快取了的,也就是每個物件的記憶體位址是相同的,賦值就直接從快取中取,不會有新的物件產生,而大於這個範圍,將會重新建立乙個integer物件,也就是new乙個物件出來,當然位址就不同了,也就!=;
一、包裝類和基本資料型別在進行「==」比較時,包裝類會自動拆箱成基本資料型別,integer(0)會自動拆箱,結果為true
二、兩個integer在進行「==」比較時,如果值在-128和127之間,結果為true,否則為false
三、兩個包裝類在進行「equals」比較時,首先會用equals方法判斷其型別,如果型別相同,再繼續比較值,如果值也相同,則結果為true
四、基本資料型別如果呼叫「equals」方法,但是其引數是基本型別,此時此刻,會自動裝箱為包裝型別
Integer型別物件比較
先看一段 integer i1 1813 integer i2 1813 system.out.println i1 i2 integer i3 127 integer i4 127 system.out.println i3 i4 列印結果 false true i1 i2 結果是false容易理...
Integer比較相等的問題
記得是有一次查詢資料,資料封裝到實體類進行資料匹配的時候,出現了integer型別比較像等的問題,明明兩個數是一樣的,但是就是匹配不上。乙個很簡陋的例子 public static void main string args else 結果輸出 明明是一樣的數,結果沒有匹配成功 雖然integer不...
工作隨筆 integer物件比較
問題 對於integer物件,當比較2 2的時候,返回的值是true還是false?當比較2000 2000的時候,返回的值是true還是false?回答 當比較2 2的時候,返回的值是true 當比較2000 2000的時候,返回的值是false。理由 equal比較是兩個值的大小是否能夠相等 比...