2016-07-10 6 views
-2

できるようにリンクして、私は次のコードを持っていると言う:ないJavaはオブジェクトのディープコピーを作成するか、単にその参照

ArrayList<String> aList = new ArrayList<String>(); 
aList.add(new String("abc"); 
... 
String aString = aList.get(0); 

aStringのはAを意味し、(0)aList.getのディープコピーを持っています新しいStringオブジェクトを持つ新しいメモリ位置、またはaStringには、aListが位置0にあるのと同じオブジェクトへの参照ポインタが割り当てられます。

+0

いいえ。保存した文字列と同じ文字列が表示されます。 – SMA

答えて

2

暗黙のディープコピーは存在せず、参照が割り当てられます。

1

aStringは、式new String("abc")で作成されたオブジェクトへの参照を保持します。リストの最初の位置を参照していないので、割り当て後にリストを変更すると、aStringは変更されません。また、Javaでは、文字列は不変オブジェクトであり、文字列自体の値を変更することはできません。

関連する問題