可能的重复:
Java - 操作顺序 - 在一行中使用两个赋值运算符 https://stackoverflow.com/questions/9440844/java-order-of-operations-using-two-assignment-operators-in-a-single-line
如果我们为一个变量分配一个像下面这样的链中的值,
int x=10, y=15;
int z=x=y;
System.out.println(x+" : "+y+" : "+z);
然后是所有三个变量的值x
, y
and z
变成15
.
然而,我不明白数组的以下现象。
int array[]={10, 20, 30, 40, 50};
int i = 4;
array[i] = i = 0;
System.out.println(array[0]+" : "+array[1]+" : "+array[2]+" : "+array[3]+" : "+array[4]);
它输出10 : 20 : 30 : 40 : 0
。它替换最后一个元素的值array[4]
with 0
.
关于之前的赋值语句 -int z=x=y;
,我期望第一个元素的值意味着array[0]
替换为0
。为什么事实并非如此?这很简单,但我无法弄清楚。您能解释一下吗?
顺便说一句,这个赋值语句array[i] = i = 0;
是虚拟的,它在此代码中没有自己的价值,不应再使用,但我只是想知道在这种情况下实际是如何工作的。
int i = 4;
当我等于4时array[i]
等于array[4]
so array[i] = i = 0;
相当于array[4] = i = 0;
。这样它将索引 4 的值更改为 0。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)