我对这个代码有点困惑:
int r = 7;
boolean result1 = r == r++; //
boolean result2 = r++ == r; //
System.out.println(result1);
System.out.println(result2);
我认为两者都是真的,但是result1是真的而result2是假的。
Oracle教程并没有真正的帮助,在Java语言规范中我也找不到任何答案。到目前为止,我不明白后增量运算符是如何具有最高运算符优先级的。
Java逐个评估表达式。
当它评估r++
时,结果是7
,但副作用立即出现,所以当它评估r
时,结果为r
的新值(8
(。
这就是为什么在复杂表达式中不应使用递增/递减表达式的原因。