java - java空检查后发生NullPointerException

标签 java null nullpointerexception

我有这个 if 语句

if((check1==null||!check1.isSolid())&&(check2==null)||!check2.isSolid())

它抛出一个空指针异常,因为 check1 或 check2 为空,但我不明白为什么要这样做,因为我在访问对象之前检查空条件,如果对象为空,为什么会这样做java 不必检查 isSolid 因为它已经是 true 了。

最佳答案

你把括号弄乱了。 Java 会将您的语句组合在一起,如下所示:

((check1 == null || !check1.isSolid()) && check2 == null) || !check2.isSolid()

如果check1nullcheck2 ,是null ,第一个语句的计算结果为 true 。当您转到第二条语句时,就会出现问题,因为 check2null , check2.isSolid()将通过NullPointerException .

将括号更改为

(check1 == null || !check1.isSolid()) && (check2 == null || !check2.isSolid())

关于java - java空检查后发生NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15713792/

相关文章:

c# - 匿名类型 LinQ - 检查空值 - 异常

Android:如何使用 RecyclerView 实现图片库

从数组访问方法时出现 java.lang.NullPointerException 错误

java - Android - 找不到抛出 NullPointerException 的内容

android - 为什么我在这个 Android 项目中得到 NullPointer Exception

java - 我可以得到一个 "bond class"的具体例子吗(来自 anti-if-campaign 网站)?

java - 在 Java 中填充多个 JTextfield 的一个 SQL 查询

php - 将csv文件加载到mysql后时间戳为空

java - 错误 : java. lang.NoClassDefFoundError:解析失败:Lorg/apache/xmlbeans/XmlOptions;

java - 当从 Start 方法调用 System.Exit 时,JavaFX8 中出现奇怪的异常