小编典典

Java运算符的优先级

java

由于Java中运算符优先级的正确性,我感到困惑。我在教程很久以前读到并具有更高的优先级高于OR,这是在提供的答案确认问题。但是,我目前正在使用《 Sun Java
6认证程序员学习指南》学习Java。本书包含以下示例:

int y = 5;
int x = 2;
if ((x > 3) && (y < 2) | doStuff()) {
    System.out.println("true");
}

我复制并引用了有关编译器如何处理上述代码的解释:

If (x > 3)true,然后是(y < 2)或结果
doStuff()true,然后打印"true"。由于存在短路&&,因此对表达式进行评估,好像周围有括号(y < 2) | doStuff()。换句话说,它被评估为之前的&&单个表达式和之后的单个表达式&&

尽管这意味着|比的优先级更高&&。是否由于使用“非短路OR”而不是短路OR?什么是真的?


阅读 231

收藏
2020-09-28

共1个答案

小编典典

那是因为它使用的是|运算符而不是||,它具有更高的优先级。这是桌子。

改用||运算符,它将按照您的想法进行。

2020-09-28