public class StackOverFlow {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("A");
al.add("B");
markAsNull(al);
System.out.println("ArrayList elements are "+al);
String str = "Hello";
markStringAsNull(str);
System.out.println("str "+ str);
}
private static void markAsNull(ArrayList<String> str){
str.add("C");
str= null;
}
private static void markStringAsNull(String str){
str = str + "Append me";
str = null;
}
}
Вывод:
ArrayList elements are [A, B, C]
str Hello
В случае ArrayList
добавляются добавленные элементы.
В случае String
вызов метода не влияет на переданную строку. Что именно делает JVM? Может кто-нибудь объяснить подробно?