package demo;
public class Test02 {
String str = new String("hello");
char[] ch = {'a','b'};
public void change(String str,char[] ch) {
str = "test ok";
ch[0] = 'c';
}
public static void main(String[] args) {
Test02 te = new Test02();
te.change(te.str,te.ch);
System.out.println(te.str);
System.out.println(te.ch);
}
}
输出为:
hello
cb
分析:
在Test02类中有两个类的成员变量(类的属性),上面你的代码明显是想通过对象去访问类的成员变量,并对其进行修改。上面两个类成员变量没有明确写自己的访问权限。因此,str是final不可改变的,ch是(default)--包内可访问 (默认)。
上面 te.change(te.str,te.ch); 执行的时候,创建了一个新String对象,当change()方法执行完毕,str = "test ok";消失。所以没有影响到类的成员变量str.
ch为char[ ] 且可以被访问到,可以被修改。