簡體   English   中英

對象之間的相等性如何完成?

[英]how is the equality between objects done?

例如,如果我們使用不同的聲明語句創建3個int類型的變量,

Integer i = 10; 
Integer j = new Integer(10); 
int k = 10;

然后比較它們的相等性,得到i == kj == k但不是i==j

這是什么原因?

由於i類型為Integerk類型為int ,因此表達式i == k會觸發拆箱 :它等效於i.intValue() == k (即使i為null,它也會引發NullPointerException )。 同樣對於j == k 但是,由於ij都具有Integer類型,因此不會執行自動拆箱,因此i == j只是檢查它們是否是同一對象— Integer的相同實例。

因為k是原始的,當您將其與其他比較時,您只比較其整數值,而其他兩個是對象。 當將它們與==運算符進行比較時,僅檢查它們是否是同一對象。

您應該使用equals()方法比較Integer對象。以下內容將在程序中返回true

i.equals(j);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM