null
文字只能分配给引用变量,通常,我们使用.equals()
方法与它们进行比较
如果处理空值,为什么要使用运算符“等于”和“不等于”来代替.equals()
方法?
答案 0 :(得分:3)
equals
是一种方法,意味着您不能在null
引用上调用它(尽管您可以调用myVariable.equals(aVariableThatIsNull)
,并且应该返回false
)。
您可以使用java.util.Objects#equals(Object, Object)
来清理代码,并且似乎可以处理null安全的相等性检查。
答案 1 :(得分:0)
方法“ equals()”是一个实例方法,要调用任何实例方法,您需要一个非null对象引用。因此,使用空引用调用equals()会导致NPE。
如果该方法是静态的,那么您也可以使用null引用调用该方法,因为静态方法未绑定到任何实例。
答案 2 :(得分:0)
有以下三个重要性原因:
稳定性-担心NullPointerException
,如果您尝试从拥有equals()
的对象访问null
方法,那肯定会发生值。这是很明显的,但仍然必须将其作为主要原因。
可见性-但是,即使我们能够做到并且不会引发异常,它仍然不会比使用{{1 }}运算符。为什么?由于操作员在视觉上将元素分开,因此可以更清楚地了解实际比较的内容。在与==
进行比较时,我们希望它在代码中清晰可见。
一致性-等于方法用于内容比较,而null
运算符用于地址比较。由于null因为没有地址而没有地址,因此在逻辑上最一致的方法是先比较地址的缺乏,然后再继续比较两个对象的实际内容(==
就是这样做的。)