对象的Java空检查

标签 java if-statement nullpointerexception null-check

好的,这是一个简单的问题,我对此没有任何问题,但我只是想确定一下。如果我这样做是正确的吗?

if (person != null && person.getAge > 20) {...}

我可以这样做吗?空检查和对象访问在同一行?它是否正确?或者我必须对 null 检查语句进行内部声明,例如:

if (person != null)
{
    if (person.getAge() > 20) {...}
}

imo,第一个声明不会抛出 NPE,但我需要专业人士的反馈...

一般来说,我的问题是,对于带有 && 的 if 语句,如果第一个 boolean 值是 false,JVM 会停止执行 if 语句还是会检查所有语句?

最佳答案

是的。运算符 &&|| 就是所谓的短路运算符。这意味着一旦知道答案,从左到右阅读,就不会评估条件中的其他语句。在您的情况下,只要 person != null 部分评估为 false,无论其他语句如何,整个条件都将保证为 false,因此 person .getAge > 20 不会被评估,也不会抛出异常。类似地,如果您使用 ||,并且第一部分的计算结果为 true,则第二部分将不会被计算,因为总体条件保证为 true 在这一点上。

关于对象的Java空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21562432/

相关文章:

java - 如何正确地将以下 if 语句重写为条件语句?使用乘法复合赋值运算符

javascript - 当未列出下拉选项时,用户可以手动输入自定义值

java - JTable 导出到 Excel 文件时避免 NullPointerException

java - 使用 Selenium 和 JUnit 解析 HTML 文档中的链接

JavaFx - 不想出现结束对话框

Javax 验证未捕获 POJO 的内部字段

java - Java 中的 BMI 计算器

c++ - (4 > y > 1) 是 C++ 中的有效语句吗?如果是,你如何评价?

java - 在之前运行的代码中获取 NullPointerException

JavaFX:向嵌套 CheckBoxTreeItem[s] 的复选框添加 CTRL 单击功能