чи відобразиться ця зміна в ArrayList?
Так, оскільки ви додали посилання на об’єкт у списку. Додане посилання все одно вказуватиме на той самий об’єкт (який ви змінили).
або коли я додаю об'єкт до ArrayList, Java створює копію та додає його до ArrayList?
Ні, об’єкт не буде скопійовано. (Він скопіює посилання на об’єкт.)
Що робити, якщо я зміню посилання на цей об’єкт на нульове? Чи означає це, що об'єкт у ArrayList тепер теж нульовий?
Ні, оскільки вміст оригінального посилання було скопійовано при додаванні до списку. (Майте на увазі , що це посилання , яка копіюється, а не об'єкт.)
Демонстрація:
StringBuffer sb = new StringBuffer("foo");
List<StringBuffer> list = new ArrayList<StringBuffer>();
list.add(sb);
System.out.println(list);
sb.append("bar");
System.out.println(list);
sb = null;
System.out.println(list);