【发布时间】:2021-03-08 13:18:53
【问题描述】:
我对这段代码有点困惑:
int r = 7;
boolean result1 = r == r++; //
boolean result2 = r++ == r; //
System.out.println(result1);
System.out.println(result2);
我认为两者都是真的,但结果 1 为真,结果 2 为假。
Oracle 教程并没有真正的帮助,在 Java 语言规范中我也没有找到任何答案。到目前为止,我不明白,后自增运算符如何具有最高的运算符优先级。
【问题讨论】:
-
试着大声说出
result1“7 等于 7,然后将 7 加一吗?”并且,对于result2,“8 增加 1 等于 8?”您还可以尝试在事物周围加上括号来强制优先。 -
即使在 Java 中,也可以编写非常晦涩的代码,这是一个示例。不仅仅是运算符优先级,希望这能教给我们关于编码风格的一课——我们永远不会在生产代码中写出这样的行。
-
这实际上与运算符优先级无关,而是与从左到右的评估顺序有关。
标签: java operator-keyword operator-precedence post-increment