integer j = 1;
i==j 猜一猜這個答案是什麼?
大夥肯定認為是true吧,也沒錯,那當i和j為下面的值時
integer i = 129;
integer j = 129;
i==j 大家再猜一猜這個答案是什麼?
輸出為false;
具體原因是
publicstatic integer valueof(string s) throws
numberformatexception
public
static integer valueof(int
i)
都是返回integercache 這個值
private static class integercache catch( numberformatexception nfe)
}high = h;
cache = new integer[(high - low) + 1];
int j = low;
for(int k = 0; k < cache.length; k++)
cache[k] = new integer(j++);
// range [-128, 127] must be interned (jls7 5.1.7)
assert integercache.high >= 127;
}private integercache() {}
}今天發現具體原因了,原來integer把-128到127(可調)的整數都提前例項化了。 原來你不管建立多少個這個範圍內的integer用valueof出來的都是同乙個物件。
解決方案:
可用integer .intvalue();來比較值;
或者呼叫 i.equals(j)
Integer自動拆箱 自動裝箱
package com.tmt.test code public class zhuangchaixiiangtest 這個的運算結果是什麼呢?new integer 128 int 128 true new integer 128 new integer 128 false integer 127...
Integer自動拆箱裝箱
integer a new integer 3 integer b 3 int c 3 system.out.println a b system.out.println a c 問題一 上面的輸出為啥?答案 false true 解答 第乙個是兩個引用之間的比較,他們沒有引用同一物件,所以為fal...
Integer類的自動拆箱和裝箱
一 自動裝箱 自動裝箱就是自動將基本資料型別轉換為包裝器型別。integer a 200 這句 經編譯後其實為 integer a integer.valueof 200 二 自動拆箱 拆箱就是自動將包裝器型別轉換為基本資料型別。integer a 10 int b a 拆箱這段 經過編譯後為 in...