对于一个连等型的表达式,其在不同位置相同的变量,
会因为变量赋值顺序的不同,影响变量的值是否赋值
成功,代码如下:
public class Test {
public static void main(String[] args) {
int a=0,b=0;
b+=a*=b+=(a=1)/(b=1);
System.out.println(b);
a=0;b=0;
b+=++a+(++a+b);
System.out.println(b);
}
}
这段代码的结果是:
0
3
虽然=表达式的运算顺序是从右向左,但是变量在运算前
已经被从左至右读入CPU,所以,
对于第一部分代码,第一个a的值为0,第二个a值为
1;运算结果为0;
对于第二部分,第一个a是1,第二个a是2;第一个a
对第二个a产生了影响,所以结果是3;
总结出下来就是,对于同一个变量,左边变量变化对右边
变量产生影响,而右边变量的变化对左边变量不产生影响。
java优先级的一个细节
最新推荐文章于 2024-06-14 12:36:46 发布