jor*_*npg 4 java operator-precedence
考虑
int a = 20;
a = a + (a = 5); // a == 25, why not 10?
Run Code Online (Sandbox Code Playgroud)
请问括号是否胜过所有优先规则?在评估某些表达式之前,RHS是否预先填充了某些变量?
因为a在您拥有的示例中首先加载,然后评估括号中的位.如果您颠倒了订单:
int a = 20;
a = (a = 5) + a;
System.out.println(a);
Run Code Online (Sandbox Code Playgroud)
10
......你确实得到10.表达式从左到右进行评估.
考虑一下:
f() + g()
Run Code Online (Sandbox Code Playgroud)
f将被召唤g.想象一下,它会是多么不直观
f() + (g())
Run Code Online (Sandbox Code Playgroud)
以前g被叫过f.
这些都在JLS§15.7.1中有详细说明(感谢@paisanco在评论中提出它).
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |