java - 如何正确处理 OR 表达式中同时包含空检查和非空检查的 if 语句

标签 java specifications operands

我有一些代码可以执行以下操作:

if(object == null || object.value.equals(" ")) {
    // do something
}
else {
   // do something else 
}

上面的内容对我来说似乎很危险,因为如果我切换两个条件的顺序或将其更改为 AND 表达式,当对象为 null 时代码将崩溃,但我也在某处读到 Java 保证操作数从左到右计算正确的。也就是说,我还读到不要认为这是真的。

我对所有这些相互矛盾的建议感到困惑,并想知道上面的代码是否构成错误。也就是说,如果这确实被认为是不好的做法,那么重新编码的最佳方法是什么?

最佳答案

在 Java 中,&&||短路( boolean 值!)运算符。所以一切都按假设进行。不会出现不必要的评估错误。某些语言将这些命名为然后或-else

boolean newGraphRequired = graphNode == null
    || gaphNode.timeStamp() != moduleNode.timeStamp();

条件变得更加简单。

关于java - 如何正确处理 OR 表达式中同时包含空检查和非空检查的 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75065538/

相关文章:

java - 为什么 Netbeans 在我的 Java 代码中建议我使用 "Flip operands of the binary operators"

java链表多线程返回相同元素

html - HTML 规范中的后代和内容模型

c# - 将零参数作为参数传递——行为定义在哪里?

javascript - JS 开发人员需要阅读 ECMAScript 规范吗?

c# - 小数和数学运算

java - 我们如何动态分配和增长数组

java - 如何仅在特定时间调用函数

java - short 左移产生零

c - C代码中忽略的模数操作数