包裝型別是引用型別,所以使用==是不能比較包裝型別物件包含的值是否相等,==只是比較兩個引用變數是否指向相同的物件。
由於在jdk1.5之後,支援自動裝箱功能,對於integer會出現下面這種情況:
integer a = 1;
integer b = 1;
system.out.println(a == b);// true
上述**中,a == b 結果為true,這只是乙個假象,讓人誤以為可以使用==來比較integer物件的值是否相等,其實a和b引用的是同乙個integer物件,所以a == b 才會返回true。
那為什麼a與b會引用同乙個integer物件呢?
當使用自動裝箱方式建立乙個integer物件時,當數值在-128 ~127時,會將建立的integer物件快取起來,當下次再出現該數值時,直接從快取中取出對應的integer物件。所以上述**中,a和b引用的是相同的integer物件。
總結:1.所有包裝型別一律使用equals方法比較值是否相等;
2.所有引用型別,當使用==運算子時,比較的是兩個引用型別變數是否指向相同的物件;
3.要比較引用型別變數的成員變數值是否相等,要使用equals方法。
關於integer更詳細的使用,見如下**:
public static void main(string args) }
榮耀Magic3嚴控App許可權 非必須一律禁止
安卓生態開放,帶來了諸多便利,也留下了很多空子可鑽,比如app的許可權要求,一直氾濫成災,乙個拍照app都敢要你 許可權,不給還不讓啟動。這兩年,各家手機廠商都越來越重視安全隱私,新發布的榮耀magic3系列更是提出了最小化 透明可控 身份匿名 端側處理 安全保護五大隱私保護原則,整個隱私資訊管理體...
iPhone或在伊朗成違禁品 在售手機一律收繳
iphone成了伊朗反走私運動的受害者 鳳凰科技訊 北京時間7月19日訊息,據科技 appleinsider報道,作為當下最熱門的電子產品之一,iphone在全世界市場都是 硬通貨 不過,本週伊朗推行的一項反走私運動卻不小心傷及 無辜 iphone在伊朗市場可能會面臨禁售命運。據伊朗塔斯尼姆通訊社報...
java中基本型別和包裝類之間的轉換
1 integer轉換 integer a newinteger 3 定義integer包裝類物件 int b a 5 物件和基本物件進行運算 2 jdk1.5引入自動裝箱和拆箱機制後,轉換更便利 裝箱 把基本型別轉換成包轉類,使其具有物件的性質,又可分為手動裝箱和自動裝箱 int i 10 int...