Java后缀运算符优先级

时间:2019-02-22 15:58:35

标签: java

在下面的代码示例中,我很难理解后缀运算符是否在比较之前发生。我知道后缀的优先级更高,但是根据java docs:

  

后缀版本(result ++)的值为原始值。

所以在这段代码中:

    int number = 2;
    boolean bob = number < number-- * number;
    System.out.println(bob +" "+number );

number输出时应为1。那是意料之中的。问题是鲍勃是假的。如果尽管有后缀,该数字仍使用“原始值”-那么问题不应该评估为: bob = 2 <2 * 2 最后我检查2是否小于4?末尾要相乘的另一个数字是否以某种方式变为1(这对我来说没有意义)?

我知道问题不在那里,因为它可以正常工作:

    number = 2;
    boolean test = 2 < number++;
    System.out.println(test);

2 <2在这里正确,然后它增加数字。为什么与前面的示例不同?

1 个答案:

答案 0 :(得分:3)

number--的值为2,但是此后所有对number的引用的值为1。因此number-- * number的值为2 * 1,即2。