兩個Integer型別數值比較大小的坑

2022-07-26 17:42:12 字數 1193 閱讀 6134

先看一段**:

1 integer number = 127;

2 integer number2 = 127;

3 integer number3 = 128;

4 integer number4 = 128;

5if (number ==number2) else

10if (number3 ==number4) else

1516

//輸出結果:

17//

integer 取值在-128~127中,用'=='比較兩個值是否相等可行

18//

integer 取值在-128~127中,用'=='比較兩個值是否相等不可行

由此可以看出 , integer取值在-128~127範圍內時 , 可以用  "==" 比較是否相等 . 因為 "==" 比較的物件位址的引用 , 又因為在這個範圍內, 是在常量池中取的值 , 並沒有重新的new物件 , 所以是可以用 "==" 比較.

當大於這個範圍後就會重新new物件 , 所以比較兩個integer是否相等就需要用compareto .

1 integer number5 = 888888;

2 integer number6 = 888888;

3if (number5.compareto(number6) == 0) else89

//輸出結果:

10//

integer 大於-128~127這個範圍,用'compareto'比較兩個值相等可行

如果乙個int型別和乙個integer型別比較是否相等, 可以用 "=="

1

int number7 = 126;

2 integer number8 = 126;34

if (number7 ==number8.intvalue()) else910

//輸出結果:

11//

乙個int型別和乙個integer型別用'=='比較是否相等,可行

總結: 

1. 如果兩個int 型別的數值比較相等可以直接使用  "==" .

2. 如果兩個integer型別的數值比較相等在-128~127之間的可以用 "=="比較 , 否則用compareto比較 .

3. 如果乙個int型別和乙個integer型別數值比較是否相等可以用 "==" . 

兩個Integer型別比較大小

基本型別和string比較資料比較實用的是使用工具模擬較靠譜 objectutils.equals object,object 使用apache.common的objectutils是有乙個坑 obejctutils.equals 引數1,引數2 切記引數1和引數2是同一型別,乙個integer乙個...

下面 Integer 型別的數值比較輸出的結果為?

輸出 f1 f2 結果為 true f3 f4 結果為 false 解析 如果整型字面量的值在 128 到 127 之間,那麼不會 new 新的 integer 物件,而是直接引用常量池 中的 integer 物件,所以上面的題中 f1 f2 的結果是 true,而 f3 f4 的結果是 false...

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容易理...