3
List<String> list = new ArrayList<String>();
String string = null;
string = "123";
list.add(string);
string = "456";
list.add(string);

for (String s : list)
{
    System.out.println(s);
}

このプログラムは次を出力します。

123
456

これはかなり自然なことです。

しかし、私は別の方法で考えています。「string」は、実際の String オブジェクトへの参照 (ポインタ) です。add() を実行すると、参照が格納されるだけです。「string」が別の String オブジェクトを参照している場合、リストが元のオブジェクトを保持しているのはなぜですか? add() の前にコピーを作成しますか?

4

3 に答える 3

0

変数'string'は、メモリ内のアドレスへのポインタにすぎないためです。リストに「文字列」を追加すると、「文字列」のメモリアドレスがリストに入力されます。再度値を割り当てると、新しい変数が指しているメモリ内のアドレスが変更されるだけです。

于 2012-11-28T12:45:04.823 に答える