[英]Common case for comparing two objects references
除了檢查null( something == null
)時,我們何時在Java中使用對象引用比較?
我想不出任何使用對象引用比較的情況。 對於我來說,抽象所有內存分配的語言似乎有點奇怪。
在某些equals
方法本身,如( AbstractList
):
public boolean equals(Object o) { // Checking identity here you can avoid further comparison and improve performance. if (o == this) return true; if (!(o instanceof List)) return false; ListIterator<E> e1 = listIterator(); ListIterator<?> e2 = ((List<?>) o).listIterator(); while (e1.hasNext() && e2.hasNext()) { E o1 = e1.next(); Object o2 = e2.next(); if (!(o1==null ? o2==null : o1.equals(o2))) return false; } return !(e1.hasNext() || e2.hasNext()); }
它比完全等於比較更快。
推理很簡單,如果兩個對象相同,它們必須相等。 因此,它經常用於equals實現,但也可用於比較J-Alex已經指出的枚舉。
當我們需要查看兩個值是否引用同一個對象時,將Object引用與==
比較非常有用。
對於對象引用, ==
的使用通常限於以下內容:
此外,默認情況下, Object#equals()
僅使用==
運算符進行比較。 必須重寫此方法才能真正有用:
public boolean equals(Object obj) {
return (this == obj); // Comparing object references by default
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.