好的,这是一个简单的问题,我对此没有任何问题,但我只是想确定一下。如果我这样做是正确的吗?
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/