在下面的代码为什么引用字符串的行为不像其他对象引用?
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;'并且您可能会理解它。 – 2011-04-13 17:20:17
你的代码中有两个不同的'b'变量,而不仅仅是一个。 – MeBigFatGuy 2011-04-13 17:29:13