在Java中将数组引用分配给另一个数组
int a[]={1, 2, 3, 4, 5};
int b[]={4, 3, 2, 1, 0};
a=b;
System.out.println("a[0] = "+a[0]);
这会将a[0] = 4
显示为明显的,因为a
被分配了对b
的引用
如果修改如下:
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]]); //<-------
然后,它显示a[(a=b)[0]] = 5
为什么这个表达式-a[(a=b)[0]]
不产生4
,即b
的第0个元素,尽管它看起来与前面的情况相同
# 1 楼答案
第二个表达式以数组索引器表达式中的赋值表达式为特征。表达式的计算结果如下:
a
b
赋值给a
,然后在索引0处取b
的元素来计算索引表达式b[0]
a
,返回5
b
分配给a
生效。对a[i]
的后续访问将引用b
,而不是原始的a
李>从本质上讲,您的单行表达式相当于以下两行代码片段: