Posted on 2007-02-13 16:53
Fisher 閱讀(454)
評論(1) 編輯 收藏 所屬分類:
Java 學習筆記
面試的時候遇到這樣一個問題
package?com.fisher.string;
public?class?TestStringChange?{
????public?void?change(String?a,?char[]?b)?{
????????a?=?"Jennfier";
????????b[0]?=?'F';
????}
????public?static?void?main(String[]?args)?{
????????TestStringChange?test?=?new?TestStringChange();
????????String?a?=?"Fisher";
????????char[]?b?=?{?'f',?'i',?'s',?'h'?};
????????test.change(a,?b);
????????System.out.println(a);
????????System.out.println(b);
????}
}
這個是比較容易迷惑的問題。
String 是對象,傳引用調用后,穿過方法
change 里去的a 是一份指向"Fisher"對象的指針,當? 在change里面改變后,指向別的對象“Jennfier"后,在原來的main 方法里不受影響,改變的不是"Fisher"對象,而是改變該方法的指針a 的指向
但是char[] 數組就會改變了,因為在change? 方法里改變的是char[] 數組的內容
答案是
Fisher
Fish