请帮助我理解两个“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
答案 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)
等式如下表所示,每行开头i
为1
且j
为2
的解释如下:
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是预函数调用,因此在(前缀)
之前减去它