java - if(String != null) 仍然通过?

标签 java string if-statement null

有时,或者说,我经常需要查看一个字符串是否为 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/

相关文章:

java - 使用 Proguard 混淆时的可分包问题

c++ - 我需要把 constexpr 放在 else-if 之后吗?

C++!!转换为 bool 值

java - 卡门与 Spring 和 Akka

java.sql.SQLRecoverableException : The Network Adapter could not establish the connection

string - Lua 'plain' string.gsub

c# - C# 客户端和 C++ 服务器中套接字上的 Unicode 数据

javascript - 使用 javascript 和 MathJax 将数学公式字符串添加到文档

bash - 如何在 bash 中结合 awk 和 if

java - 如何让 DropWizard JUnit 应用程序规则定义使用 docker 规则中的启动信息?