我了解这两个术语之间的区别,以及如果您想要检查两个对象是否具有引用或相同的值,您将使用什么方法。我的问题是,与检查两个对象是否具有相同的内容或值(从来没有一次我必须检查两个对象是否具有相同的引用)相比,何时必须检查两个对象是否具有相同的引用?
推荐答案这并不是真正的"代替"相等性检查,但出于性能和空安全原因,您可以在执行相等性检查之前执行引用检查。
实际上,这就是调用Objects.equals(a,b)而不是a.equals(b)时发生的事情。
public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); }