2013-02-20 143 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; 

你不是你的數組的副本,你只是複製一個引用到同一個數組。