【发布时间】:2011-08-04 21:54:41
【问题描述】:
在以下代码中
public class Test {
public static void main(String[] args){
int [] arr = new int[]{1,2};
String b=new String("abc");
f(b,arr);
System.out.println(b);
System.out.println(arr[0]);
}
public static void f(String b, int[] arr){
b+="de";
b=null;
arr[0] = 5;
}
}
为什么字符串的引用变量不像数组的引用变量?
我知道字符串是不可变的,因此对它们的操作会创建新字符串,但是对字符串的引用以及引用 b 如何仍然引用旧值,尽管它已更改为在 f() 方法中引用其他内容。
【问题讨论】:
-
对字符串的引用确实像其他引用一样。尝试将
f的参数重命名为x和y并在f中使用y = null;,而不是arr[0]=5;,您可能会理解它。 -
您的代码中有两个不同的“b”变量,而不仅仅是一个。
标签: java string pass-by-reference