比较对象的值为null

时间:2019-05-30 09:05:30

标签: java null equals

null文字只能分配给引用变量,通常,我们使用.equals()方法与它们进行比较

如果处理空值,为什么要使用运算符“等于”和“不等于”来代替.equals()方法?

3 个答案:

答案 0 :(得分:3)

equals是一种方法,意味着您不能在null引用上调用它(尽管您可以调用myVariable.equals(aVariableThatIsNull),并且应该返回false)。

您可以使用java.util.Objects#equals(Object, Object)来清理代码,并且似乎可以处理null安全的相等性检查。

答案 1 :(得分:0)

方法“ equals()”是一个实例方法,要调用任何实例方法,您需要一个非null对象引用。因此,使用空引用调用equals()会导致NPE。

如果该方法是静态的,那么您也可以使用null引用调用该方法,因为静态方法未绑定到任何实例。

答案 2 :(得分:0)

有以下三个重要性原因:

  1. 稳定性-担心NullPointerException,如果您尝试从拥有equals()的对象访问null方法,那肯定会发生值。这是很明显的,但仍然必须将其作为主要原因。

  2. 可见性-但是,即使我们能够做到并且不会引发异常,它仍然不会比使用{{1 }}运算符。为什么?由于操作员在视觉上将元素分开,因此可以更清楚地了解实际比较的内容。在与==进行比较时,我们希望它在代码中清晰可见。

  3. 一致性-等于方法用于内容比较,而null运算符用于地址比较。由于null因为没有地址而没有地址,因此在逻辑上最一致的方法是先比较地址的缺乏,然后再继续比较两个对象的实际内容(==就是这样做的。)