Integer物件的比較問題

2021-10-11 03:21:58 字數 1029 閱讀 4909

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比較是兩個值的大小是否能夠相等 比...