1. ホーム
  2. java

[解決済み] ArrayListにオブジェクトを追加し、後で修正する

2023-05-30 09:57:57

質問

ArrayList があり、そこにオブジェクトを追加し、後でこのオブジェクトを変更した場合、この変更は ArrayList に反映されますか。 それとも、ArrayList にオブジェクトを追加すると、Java はコピーを作成してそれを ArrayList に追加するのですか。

このオブジェクトへの参照をnullに変更した場合はどうなりますか?それは、ArrayListのオブジェクトも今NULLであることを意味しますか?

どのように解決するのですか?

この変更はArrayListに反映されるのでしょうか?

はい、あなたが 参照 を追加したからです。あなたが追加した参照は、まだ同じオブジェクト(あなたが変更したもの)を指しています。



または私がArrayListにオブジェクトを追加するとき、Javaはコピーを作成し、ArrayListにそれを追加しますか?

いいえ、オブジェクトはコピーされません。(オブジェクトへの参照はコピーされます)。



このオブジェクトの参照をnullに変更した場合はどうなりますか?それは、ArrayListのオブジェクトもnullになったということでしょうか?

いいえ、元のリファレンスの内容が コピーされた されるからです。(注意してほしいのは 参照 がコピーされるのであって、オブジェクトがコピーされるのではないことに注意してください)。

デモです。

StringBuffer sb = new StringBuffer("foo");

List<StringBuffer> list = new ArrayList<StringBuffer>();
list.add(sb);

System.out.println(list);   // prints [foo]
sb.append("bar");

System.out.println(list);   // prints [foobar]

sb = null;

System.out.println(list);   // still prints [foobar]