![](/img/trans.png)
[英]How to test equality between class objects using FEST assertThat(…) method?
[英]how is the equality between objects done?
例如,如果我們使用不同的聲明語句創建3個int類型的變量,
Integer i = 10;
Integer j = new Integer(10);
int k = 10;
然后比較它們的相等性,得到i == k
和j == k
但不是i==j
。
這是什么原因?
由於i
類型為Integer
且k
類型為int
,因此表達式i == k
會觸發拆箱 :它等效於i.intValue() == k
(即使i
為null,它也會引發NullPointerException
)。 同樣對於j == k
。 但是,由於i
和j
都具有Integer
類型,因此不會執行自動拆箱,因此i == j
只是檢查它們是否是同一對象— Integer
的相同實例。
因為k
是原始的,當您將其與其他比較時,您只比較其整數值,而其他兩個是對象。 當將它們與==
運算符進行比較時,僅檢查它們是否是同一對象。
您應該使用equals()
方法比較Integer
對象。以下內容將在程序中返回true
。
i.equals(j);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.