java - Java 中的优先级

标签 java increment operator-precedence

根据优先级表,一元后缀递增和递减运算符比关系运算符具有更高的优先级,那么为什么在这样的表达式中 (x++ >=10) 关系运算符先求值然后变量递增?

最佳答案

运算符不会首先被评估。顺序是:

  • 计算LHS (x++) - 结果是x的原始值,然后x递增
  • 计算 RHS (10) - 结果为 10
  • 比较 LHS 和 RHS 的结果

下面是演示的代码:

public class Test {

    static int x = 9;

    public static void main(String[] args) {
        boolean result = x++ >= showXAndReturn10();
        System.out.println(result); // False
    }

    private static int showXAndReturn10() {
        System.out.println(x); // 10
        return 10;
    }
}

打印出 10 然后是 false,因为在评估 RHS 时 x 已经 递增... 但 >= 运算符仍在计算 9 >= 10 作为表达式 x++ 的结果是 original x 的值,不是递增的值。

如果您希望结果递增后,请改用++x

关于java - Java 中的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45029058/

相关文章:

java - 即使具有 transient ApplicationContext UI 的成员,XmlWebApplicationContext 的 Vaadin Spring Addon NotSerializedException

search - vim 让搜索并用增量替换

c - i=i+1 是未定义的行为吗?

java - 哪个更快 : "null == myObject" or "myObject == null"?

面试Java编程测试

java - 无法将 ToIntBiFunction 作为 java lambda 表达式中的参数传递

java - Elastic Search Transport Client 过时连接

python - 在 for 循环中通过三元运算符递增不同的变量

c - 后增量和预增量运算符

boolean - boolean 运算符优先级