请帮助我了解两个“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
i == j--
方法i == j; j = j - 1;
i == j-1
方法i == (j-1);
i == --j
方法j = j - 1; i == j;
这是运算符优先级表,按从高到低的顺序排列。例如,-
优先级高于==
,这就是为什么i==j-1
意味着i==(j-1)
等价物在下表中,以及每行开头的i
is1
和j
is的解释: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
区别在于:
j-- 发生在调用之后(因此在比较期间它评估 i==j 是 j 的当前值。- 发生在(后缀)之后
j-1 是表达式的一部分,因此作为计算的一部分发生
--j 是函数调用前,所以它在(前缀)之前被减去