1. 代码
package com.tangyuan;
public class StringDemo {
String str = new String("Good");
char[] ch = {'a','b','c'};
public static void main(String[] args) {
StringDemo sd = new StringDemo();
sd.change(sd.str, sd.ch);
System.out.println(sd.str+"and");
System.out.println(sd.ch);
//判断输出结果,很简单的,在面试中经常遇到
}
public void change(String str,char ch[]){
str = "Bad";
ch[0] = 'A';
}
}
运行结果:
很显然:
string 没改变而char 改变
2. 原因分析
str是按值传递,所以在函数中对它的操作只生效于它的副本,与原字符串无关。
ch是按址传递,在函数中根据地址,可以直接对字符串进行操作。