gpt4 book ai didi

java - 困惑如何将索引处的值分配给索引处的另一个值到列表中索引处的另一个值

转载 作者:行者123 更新时间:2023-12-01 16:45:28 25 4
gpt4 key购买 nike

假设代码是:

int[] a = {0,1,2,3};
a[0]=a[2]=a[1];
for(int i=0; i<a.length; i++) {
System.out.print(a[i]+ " ");
}

为什么它打印“1 1 1 3”而不是“2 1 1 3”?

提前致谢。

最佳答案

当一条语句中出现多个赋值时,这些赋值具有右结合性。这意味着

a[0]=a[2]=a[1];

与以下含义相同:

a[0]=(a[2]=a[1]);

JLS Section 15.26 details :

There are 12 assignment operators; all are syntactically right-associative (they group right-to-left). Thus, a=b=c means a=(b=c), which assigns the value of c to b and then assigns the value of b to a.

At run time, the result of the assignment expression is the value of the variable after the assignment has occurred.

因此,一次赋值的最终结果就是被赋值的值。这意味着:

  1. a[1] 处的值被分配给 a[2],即 1。这是表达式 a[2]=a[1] 的值。
  2. 将步骤 (1) 中的值 1 分配给 a[0]

如果您希望在复制 a[1] 中的值之前将 a[2] 中的值分配给 a[0] > 到 a[2],那么您必须将它们分成单独的语句。

a[0]=a[2];
a[2]=a[1];

关于java - 困惑如何将索引处的值分配给索引处的另一个值到列表中索引处的另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52395667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com