求問:結果為什麼是這樣的啊??
change:Test
change:g
change:b
change:c
TestPram:Hello
TestPram:g
TestPram:b
TestPram:c
代碼如下:
public class TestPram {
String str = "Hello";
char[] ch = {'a','b','c'};
public static void main(String[] args) {
TestPram tb = new TestPram();
tb.change(tb.str, tb.ch);
System.out.println("TestPram:"+tb.str);
for(int i=0;i<tb.ch.length;i++){
System.out.println("TestPram:"+tb.ch[i]);
}
}
public void change(String str,char[] ch){
str = "Test";
ch[0]='g';
System.out.println("change:"+str);
for(int i=0;i<ch.length;i++){
System.out.println("change:"+ch[i]);
}
}
}
這就涉及到java中函數參數的值傳遞和引用傳遞,
1.值通常是只原始數據類型比如int,char等,你的代碼中的ch[0] 就是一個char類型的變量 ,遵循的是值傳遞
2.String是類,str作為一個對象,遵循的是引用傳遞,所以你是沒有辦法修改它的值的,只能改變它的引用
還不懂可以看這裡 http://jackycheng2007.iteye.com/blog/935038