0

これを行うとどうなりますか:

List<Integer> listA = new ArrayList<Integer>();
List<Integer> ListB = new ArrayList<Integer>();

listA = ...filled with some data...
listB = ...filled with some other data...

listA.clear();
listA = listB;

値はコピーされますか、それとも単に再参照されますか?今(このコードの後で)listA.clear() もう一度呼び出すと、同様にlistBクリアされますか?

4

4 に答える 4

6

さて、listA = listB変数listAがと同じリストを参照した後listB。Javaには、C++などにあるようなコピーコンストラクタはありません。

于 2012-05-03T07:24:15.150 に答える
2

参照の値だけがコピーされるため、両方が同じオブジェクトを参照します

于 2012-05-03T07:24:39.040 に答える
1

プリミティブ型のみが値によってコピーされます。上記を実行すると、同じリストを参照するlistAとlistBが作成されるため、listAを使用すると、listBとその逆に同じ効果があります。参照を失いたい場合は、変数の1つをnullに設定するだけです。

于 2012-05-03T07:28:54.080 に答える
0

いいえ、listAlistBは2つの異なる整数のリストです。これらは互いに関連していません。でを行うと、clear()まったくListA影響ListBを受けません。あなたの場合、最後にListA参照が変更され、変数がに向けられていListBます。したがって、これらの変数は両方とも、である1つのリストを指しますListB。したがって、これらの参照のいずれかに対するアクションはすべて同じ効果があります。ListAオブジェクトはすでに空で、何も含まれていません。そのオブジェクトを参照する方法はありません。

于 2012-05-03T07:27:49.133 に答える