兩段代碼,結果的差別,請結合代碼給圖解下內存和執行過程。字符串對象
java
public class PassAddr { public static void main(String[] args) { String s=new String("old"); //1 method(s); //3 System.out.println(s); } static void method(String str){ str=new String("new"); //2 } }
這個輸出結果爲:old數組
數組對象
spa
public class T { public static void main(String[] args) { String[] arr=new String[2]; arr[0]="old_0"; arr[1]="old_1"; //11 /*arr[0]=new String("old_0"); arr[1]=new String("old_1"); //11 一樣*/ method(arr); //14 System.out.println(arr[0]+";"+arr[1]); } static void method(String[] a){//12 a[0]="new_0"; a[1]="new_1"; //13 } }
這個輸出倒是:new_0;new_1code
string
對象
------執拗的分割線---------blog
此時a[0]和a[1]的值被改變,其實就是arr的相應值改變了。最後就出現告終果如圖:內存
因此就出現結果改變的狀況了。字符串
這麼一做圖,很直觀了。string
[2011-06-27]it