包裝型別之間一律使用equals來判斷值是否相等

2021-09-02 01:41:47 字數 687 閱讀 6561

包裝型別是引用型別,所以使用==是不能比較包裝型別物件包含的值是否相等,==只是比較兩個引用變數是否指向相同的物件。

由於在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...