兩個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...