Java Postincrement和运算符优先级



我对这个代码有点困惑:

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(。

这就是为什么在复杂表达式中不应使用递增/递减表达式的原因。

相关内容

  • 没有找到相关文章

最新更新