这是设计的原因,会涉及到一些深层的问题。
因为java传递基本类型永远是按照“按值传递”,char也是基本类型,即使你把一个char类型传进方法中,这个值也在方法外也不会改变。
除了基本类型,java是”按引用传递“,数组是一个”引用“,传进方法能被方法体改变值,而且即使在方法体外也是被编写后的值。[code]public class PassValue {
char a = 'e';
char[] b = {'a','b'};
public void initial()
{
System.out.println("初始char a="+ a);
System.out.println("初始char b[] ="+ b[0]+ b[1]);
}
public void changeVal (char c)
{
c = 'a';
System.out.println("方法体内的字符(基本类型)char a="+ c);
}
public void changeRef(char[] h)
{
h[0]='c';
h[1]='d';
System.out.println ("方法体内的数组(引用类型)char[] b="+h[0]+h[1]);
}
public void change()
{
changeVal(a);
System.out.println("方法体外的字符char a=" + a);
changeRef(b);
System.out.println("方法体外的数组char[] b=" + b[0] + b[1]);
}
public static void main (String args[])
{
PassValue v = new PassValue();
v.initial();
v.change();
}
}[/code]输出[code]初始char a=e
初始char b[] =ab
方法体内的字符(基本类型)char a=a
方法体外的字符char a=e
方法体内的数组(引用类型)char[] b=cd
方法体外的数组char[] b=cd[/code] |