影响java中运算符优先级的括号
我的理解是括号内的表达式首先将d设置为3 因此,上述表达式等价于 d=3 d+=3,应为6。影响java中运算符优先级的括号,java,Java,我的理解是括号内的表达式首先将d设置为3 因此,上述表达式等价于 d=3 d+=3,应为6。 java如何将其评估为12 d首先计算为9,当您将其更改为3时,快捷方式add运算符将新的d值(3)与旧的d值(9)相加 class test8{ static public void main(String args[]){ int d = 9; d += d = 3; System.out.println (d); } } 第一个d=
java如何将其评估为12 d首先计算为9,当您将其更改为3时,快捷方式add运算符将新的d值(3)与旧的d值(9)相加
class test8{
static public void main(String args[]){
int d = 9;
d += d = 3;
System.out.println (d);
}
}
第一个d=9。然后d+=d=3,这意味着:
int d = 9;
d += d = 3;
因此,让d等于9加3,也就是12。与其他语言一样,Java中的偏执有着非常重要的作用,这就是为什么你会因为没有注意而遇到一些问题 您可能会看到这行代码:
Let `d` equal to `d` plus the result of `d=3`.
^ ^
9 3
作为:
第一个d来自+=运算符,第3个来自表示d=3,您的表达式是d+=d=3
evaluate+=表达式,它是d=d+d=3的快捷方式
计算d+d=3表达式以对其进行计算首先计算值为9的左侧d,然后计算右侧d
评估d=3,其值为3且有副作用
继续步骤2,我们有9+3
5赋值d=12,用于擦除先前的d值
我看不到您在发布的代码中提到的括号。int d=9;9+3 = 12. 括号在哪里?我试过d+=d=3,结果是12。我很清楚这一点。我也试过d+=d=3。理想情况下,应首先计算括号中的子表达式,因为括号具有最高优先级。所以,这一个转化为d=3;d+=3;我试过d+=d=3,结果是12。我很清楚这一点。我也试过d+=d=3。理想情况下,应首先计算括号中的子表达式,因为括号具有最高优先级。所以,这一个转化为d=3;d+=3;这应该给出d=6。好吧,你是对的。偏执先被评估,但在初始化之后。这就是为什么d1+=d2=3你首先评估属性,然后是偏执。我的意思是,JVM首先看到d将被评估为某个东西,让我们记住这一点,然后在它经过时看到:嗯,我有一个最好对其进行评估[评估结果为3],然后执行操作,如果支持,则尝试d+=d=3,结果为12。我很清楚这一点。我也试过d+=d=3。理想情况下,应首先计算括号中的子表达式,因为括号具有最高优先级。所以,这一个转化为d=3;d+=3;这不是一个普通的操作。将其排序为int tmp=d;d=tmp+d=3
d += d = 3;
d = d + 3