【发布时间】:2013-03-30 02:31:55
【问题描述】:
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到底在做什么?谁能详细解释一下?
【问题讨论】:
-
将
null分配给变量不会影响对象。 -
来自未来的读者:IMO,直接跳到西科尔斯基的答案!
标签: java parameters call-by-value pass-by-reference