0

データで満たされたJavaの配列があります。私が知りたいのは、私がこのようなことをした場合です:

int[] array = new int[2];
array[0] = 0;
array[1] = 1;

//other statements...

array[1] = array[0];

の値をarray[1]もう一度変更すると、 の値もarray[0]変更されますか? ありがとう!

4

1 に答える 1

3

array[1] の値を再度変更すると、array[0] の値も変更されますか?

いいえ。このステートメント:

array[1] = array[0];

2 番目の要素の値を最初の要素にコピーするだけです。2 つの個別の変数があるかのようです。

int x = 10;
int y = x;
// Further changes to x don't affect y

同じことが当てはまりますが、より微妙に、参照の配列がある場合、たとえば

StringBuilder[] builders = new StringBuilder[10];
builders[0] = new StringBuilder("Original");
builders[1] = builders[0];
builders[0] = new StringBuilder("Hello");
System.out.println(builders[1]); // Prints Original

最後の割り当てステートメントは ...の値を変更しませんbuilders[1]が、代わりに次のように記述した場合:

builders[0].append("Foo");
System.out.println(builders[1]); // Prints OriginalFoo

builders[0]との値はbuilders[1]変更されていません - それらはまだ同じオブジェクトを参照しています - しかし、そのオブジェクトの内容は変更されているため、最終行の出力です。

于 2013-03-05T01:42:08.170 に答える