2013-02-20 61 views
2
int[] a = new int[] {7,2,1,10,8,9}; 
int[] b = a; 
Arrays.sort(b); 

为什么两个阵列得到B上的排序操作后进行排序。不应该只有b被排序?奇怪的排序行为

+3

没有_both arrays_,因为只有一个数组有两个引用。 – jlordo 2013-02-20 10:34:39

回答

7

因为它只有一个数组。 “a”和“b”只是对同一个数组的引用。

如果您要使用克隆方法来复制值,那么a和b将是不同的数组,并且只有b会被排序。

0

b两者并a指向相同的阵列对象。所以他们都是同一个阵列。

0

因为指定a只给b指定数组。内存中只有一个数组,所以无论您访问哪个数组,它都会改变它。

2

由于ab是到同一阵列的引用。当你做

int[] b = a; 

你不是你的数组的副本,你只是复制一个引用到同一个数组。