有很多答案和博客说在 Java 中检查 null 或空字符串的正确方法如下
if(str != null && !str.isEmpty())
但是后来很多答案说
if(str == null)
是检查字符串空值的错误方法,因为在此检查中,我们查看两个对象是否占用内存中的相同空间。我理解这个声明,但如果是这种情况,那么即使使用 != 完成的检查也不应该是检查 null 与否的正确方法。请帮助我理解这种情况。
有很多答案和博客说在 Java 中检查 null 或空字符串的正确方法如下
if(str != null && !str.isEmpty())
但是后来很多答案说
if(str == null)
是检查字符串空值的错误方法,因为在此检查中,我们查看两个对象是否占用内存中的相同空间。我理解这个声明,但如果是这种情况,那么即使使用 != 完成的检查也不应该是检查 null 与否的正确方法。请帮助我理解这种情况。
正如评论已经指出的那样,检查 String 引用(或任何对象)是否null
正确也不是坏习惯。
我认为您混淆了两个概念: object reference和 object content。null
是一个空引用,因此您始终可以检查对象引用(例如变量、常量、参数等)是否为空或未使用==
,因为您正在比较引用,而不是内容。另一方面,要比较 2 个字符串(它们的内存内容,而不是它们的内存地址),您应该使用equals
and not ==
。这是因为equals
比较对象的内容(实际上它并不那么简单,因为它取决于它的实现和/或覆盖,但现在让我们忘记它)而不是对象引用。