在下面的代碼爲什麼引用字符串的行爲不像其他對象引用?
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