影响java中运算符优先级的括号

时间:2014-08-29 06:58:32

标签: java

class test8{
    static public void main(String args[]){
        int d = 9;
        d += d = 3;
        System.out.println (d);
    }
}

我的理解是括号内的表达式首先评估设置d3

所以,上面的表达式相当于
    d = 3
    d+= 3应该6 java如何将其评估为12

4 个答案:

答案 0 :(得分:1)

int d = 9;
d += d = 3;

首先d = 9。然后是d += d = 3,这意味着:

Let `d` equal to `d` plus the result of `d=3`.  
                  ^                      ^
                  9                      3

因此,d等于93 12

答案 1 :(得分:0)

d首先计算为9,当你将其更改为3时,快捷方式添加运算符会添加新值d,即3的旧值,即9

答案 2 :(得分:0)

与其他语言一样,Java中的Paranthesis具有非常重要的作用,这就是为什么因为不注意而出现问题的原因

您可能会看到以下代码行:

  d += d = 3;

如:

 d = d + 3

第一个d来自+ =运算符,而3来自d = 3

答案 3 :(得分:0)

你的表达式是d+=(d=3)下一步评估

  1. 评估+=表达式(这是d = d + (d=3)
  2. 的快捷方式)
  3. 评估d + (d=3)表达式以评估它首先评估左侧d,其值为9,然后右侧
  4. 评估具有值3和副作用的d=3
  5. 继续第2步我们9 + 3 5分配d = 12,删除之前的d