有时,或者说,我经常需要查看一个字符串是否为 null,所以我使用这样的条件:
if(str != null) {
}
直到今天它都运行良好,现在即使是 null 的字符串也会因为某种我不明白的原因而通过。有知道解释的人吗?或者解决方案?
编辑: 好的,所以由于某种原因,字符串似乎不是空的,这很奇怪,因为我从未定义它是什么,只是定义它存在。因此,该字符串是单词“null”的字符串。我完全不知道为什么会这样?当我执行以下操作时:
String str;
然后它自动为空,对吧?无论哪种方式,如果不是,为什么它会变成字符串“null”?
最佳答案
解释是你的诊断不正确。如果 str
为 null,则该 if
语句的主体将不会 被执行 - 就这么简单。您还没有说明您是如何诊断出 str
是 为空的,但该代码仍在执行 - 如果是因为您看到了 NullPointerException
,出于各种原因您可能仍然会收到它。特别是,这很可能是由于 不同的 表达式在 if
block 中的 null
时被取消引用。
或者,str
是一个被其他线程修改的非局部变量吗?
编辑:请注意,我一直假设您知道 null 和对空字符串的引用之间的区别 - 您实际上是在谈论 str
的值为 null,对吧?如果您谈论的是空字符串,那就是另一回事了。
关于java - if(String != null) 仍然通过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8876980/