在Java中将数组引用分配给另一个数组
这将显示在Java中将数组引用分配给另一个数组,java,arrays,Java,Arrays,这将显示a[0]=4,因为a分配了对b的引用 如果按如下所示进行修改 int a[]={1, 2, 3, 4, 5}; int b[]={4, 3, 2, 1, 0}; a=b; System.out.println("a[0] = "+a[0]); inta[]={1,2,3,4,5}; intb[]={4,3,2,1,0}; System.out.println(“a[(a=b)[0]=”+a[(a=b)[0]])// 第二个表达式以数组索引器表达式中的赋值表达式为特征。表达式的计算
a[0]=4
,因为a
分配了对b
的引用
如果按如下所示进行修改
int a[]={1, 2, 3, 4, 5};
int b[]={4, 3, 2, 1, 0};
a=b;
System.out.println("a[0] = "+a[0]);
inta[]={1,2,3,4,5};
intb[]={4,3,2,1,0};
System.out.println(“a[(a=b)[0]=”+a[(a=b)[0]])// 第二个表达式以数组索引器表达式中的赋值表达式为特征。表达式的计算结果如下:
- 已选择索引器表达式的目标。这是原始数组
a
- 首先将
b
赋值给a
,然后在索引零处取b
的元素,从而计算索引表达式
- 外部索引器的索引评估为
b[0]
- 索引应用于
a
,返回5
- 将
b
分配给a
生效。对a[i]
的后续访问将引用b
,而不是原始a
从本质上讲,您的单行表达式相当于此两行代码段:
int a[]={1, 2, 3, 4, 5};
int b[]={4, 3, 2, 1, 0};
System.out.println("a[(a=b)[0]] = "+a[(a=b)[0]]); //<-------
数组索引有一个。所以最后它只有一个[4]…:)@dasblinkenlight,但是为什么将b赋值给a只在进程结束时生效?@AlexR为了决定表达式a[something]
的结果,实际上何时赋值并不重要。唯一重要的是选择哪个对象作为[]
表达式的第一个操作数。在本例中,对象是旧的a
,因为赋值在操作数的右侧,因此赋值的效果在表达式的该点不可见。
System.out.println("a[(a=b)[0]] = "+a[b[0]]); // Array reference completes first
a=b; // Array assignment is completed last