int z = 1;
System.out.println(z++ == ++z);
System.out.println(++z == z++);
输出将是:
false
true
我不明白为什么,请向我解释一下。
最佳答案
Operands of ==
are evaluated left to right ,并且 ++
具有更高的优先级,因此您的代码相当于:
int z = 1;
int tmp1 = z++; //tmp1 = 1 / z = 2
int tmp2 = ++z; //tmp2 = 3 / z = 3
System.out.println(tmp1 == tmp2);
tmp1 = ++z; //tmp1 = 4 / z = 4
tmp2 = z++; //tmp2 = 4 / z = 5
System.out.println(tmp1 == tmp2);
我假设您了解 z++
和 ++z
之间的区别:
tmp1 = z++;
可以分解为:tmp1 = z; z = z + 1;
- 而
tmp2 =++z;
可以分解为:z = z + 1; tmp2 = z;
关于java - 为什么java语句评估会发生这样的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12036481/