Java(おそらくかなり小さい= P)について私が理解しているところでは、Javaはプリミティブ値をオブジェクトと異なる方法で扱います。私が考えることの1つの例は、プリミティブが値渡しされ、オブジェクトが参照値を介して渡されるということです。これを拡張するプリミティブによる浅いコピー
、私はint型の配列を作成するコードを実装している、と浅いがint型の新しい配列にそれを上書きコピー:
public class Test {
public static void main(String[] args){
int[] array = {2,3,4,5};
int[] copy = array;
copy[1] = 0;
for (int i : copy){
System.out.print(i);}
System.out.println();
for (int i : array){
System.out.print(i);}
}
}
ただし、出力は次のとおりです。
2045
2045
だから私が困惑しているのは、なぜ両方のアレイが変わるのかです。元の配列のコピーを作成したとき、(プリミティブを扱っているので)要素の値だけをコピーしたと思いましたか?
いいえ、あなただけの同じ配列を指す第二の基準を作成しました。 – Stultuske
これはあまり意味があります。ですから、新しいint []コピーを作成して配列から個々の要素をコピーしてforループでコピーすると、これは起こりません。確かに – javanewbie
。もう少しwokですが、それはあなたの問題を解決するだろう – Stultuske