一个简单的java编程题,但是想不明白!请高手指点

public class A {
// String str=new String("good");
String str="good";
char[] ch={'a','b','c'};
public static void main(String args[])
{
A ex=new A();
ex.change(ex.str,ex.ch);
//ex.str="test ok";
System.out.print(ex.str+" and ");
System.out.print(ex.ch);
}
public void change(String str,char ch[])
{
str="test ok";
ch[0]='g';
}
}
输出结果是:good and gbc
我想问的是,在下面change函数中的str的付值对输出的结果 没有影响吗,而char为什么又会改变?如果在A体内改一下,如:ex.str="test ok";这样的话,就可以把输出的值改掉,为什么会这样?

你那个change函数写的很畸形。
明明是面向对象的为什么还要传递本来就是对象的参数。
public void change(String str,char ch[])
{
str="test ok";
ch[0]='g';
}
你的这个函数里头,所有的都是对局部变量的操作。
ch改变的原因是因为它是指针,指针的内容可以回传。而str是局部变量,不具备回传的功能。
修改方法:
public void change()
{
str="test ok";
ch[0]='g';
}
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答