Integer型別值相等或不等分析

2021-08-10 21:26:43 字數 866 閱讀 5089

兩個integer變數,定義為integer a;  integer b;

如果 integer a = 123, integer b = 123,可以返回true

但如果integer a = 12345, integer b = 12345,返回false

看下integer的原始碼

public static integer valueof(int i)

預設integercache.low 是-128,integer.high是127,如果在這個區間內,他就會把變數i當做乙個變數,放到記憶體中;

但如果不在這個範圍內,就會去new乙個integer物件,

在1中integer值在這個範圍內,直接使用integercache中的值進行比較

在2中integer值不在這個範圍內,new了兩個例項,這樣再用==,肯定是false。

integer 型別的值在[-128,127] 期間,integer 用 「==」是可以的, integer  與 int 型別比較(==)比較的是值。

另一種情況 int 與 integer 比較:

integer e = 128

;int

e1 = 128

;(e == e1 ----- true)

引用型別integer與值型別int比較,比較的是

各自的value,因為int在堆中是不開闢記憶體,他在棧中的值則為他本身的值

Integer型別值相等或不等分析

用以下 做測試 1 test 2public void testinteger 得出的結論是 integer 型別的值在 128,127 期間,integer 用 是可以的。為什麼會出現這個情況呢,實際上在我們用integer a 數字 來賦值的時候integer這個類是呼叫的public stat...

Integer值判斷是否相等問題

今天發現了乙個奇怪的問題 integer allrightstotal 140 integer allrightslasttotal 140 if allrightstotal allrightsinit 最後得出的結論是 對於integer值比較有範圍規定 integer 型別的值在 128,12...

Integer值判斷是否相等問題

昨天在開發中遇到乙個問題,定義了兩個integer變數,暫且定義為integer a integer b 這兩個值由前端賦值並傳到後台,前台傳的是a 12345,b 12345,但我在後台比較的時候 if a b 卻返回false,好無語啊,不都是123嗎?為什麼返回false,後來改為equals...