データで満たされたJavaの配列があります。私が知りたいのは、私がこのようなことをした場合です:
int[] array = new int[2];
array[0] = 0;
array[1] = 1;
//other statements...
array[1] = array[0];
の値をarray[1]
もう一度変更すると、 の値もarray[0]
変更されますか? ありがとう!
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]
変更されていません - それらはまだ同じオブジェクトを参照しています - しかし、そのオブジェクトの内容は変更されているため、最終行の出力です。