2
int[] a = new int[] {7,2,1,10,8,9};
int[] b = a;
Arrays.sort(b);

b の並べ替え操作の後に両方の配列が並べ替えられるのはなぜですか。ソートされるのは b だけであってはなりませんか?

4

4 に答える 4

7

配列が 1 つしかないためです。"a" と "b" は、同じ配列への参照のみです。

clone メソッドを使用して値をコピーすると、a と b は異なる配列になり、b だけがソートされます。

于 2013-02-20T10:33:25.420 に答える
2

abは同じ配列への参照であるためです。あなたがするとき

int[] b = a;

配列のコピーを作成しているのではなく、同じ配列への参照をコピーしているだけです。

于 2013-02-20T10:34:23.673 に答える
0

と の両方が同じ配列オブジェクトba指しています。したがって、両方とも同じ配列です。

于 2013-02-20T10:33:41.057 に答える
0

a を b に割り当てると、配列への参照のみが割り当てられるためです。メモリ内には配列が 1 つしかないため、それを変更すると、どこからアクセスしても変更されます。

于 2013-02-20T10:33:55.620 に答える