java中postfix与unary和additive之间的区别是什么

时间:2013-04-24 02:40:53

标签: java logic

请帮助我理解两个“TRUE”和“FALSE”输出之间的区别。 并指导我如何在Oracle Docs中获得与逻辑和运算符相关的主题。

int i = 1;
int j = 2;

System.out.println(i==j--);// FALSE
j = 2;
System.out.println(i==j-1);//TRUE
j = 2;
System.out.println(i==--j);//TRUE

3 个答案:

答案 0 :(得分:3)

i == j--表示i == j; j = j - 1;

i == j-1表示i == (j-1);

i == --j表示j = j - 1; i == j;

Here is the operator precedence table,按从高到低的顺序排列。例如,-的优先级高于==,这就是为什么i==j-1表示i==(j-1)

的原因

答案 1 :(得分:3)

等式如下表所示,每行开头i1j2的解释如下:

i==j--;   i==j; j--;  // 1==2 is false, j <- 1
i==j-1;   i==j-1;     // 1==(2-1) is true, j does not change
i==--j;   --j; i==j;  // j <- 1, 1==1 is true

答案 2 :(得分:1)

区别在于:

j--在调用之后发生(所以在比较期间评估i == j是j的当前值。 - 发生在(后缀)之后

j-1是表达式的一部分,因此作为计算的一部分发生

- j是预函数调用,因此在(前缀)

之前减去它