public class A{
String str = "good";
char[] ch = {'a','b','c'};
int num = 10;

public void change(String str,char[] ch,int num){
str = "test ok";
ch[0] = 'g';
num = 20;
}

public static void main(String[] args) {
A a = new A();
a.change(a.str,a.ch, a.num);
System.out.println(a.str);
System.out.println(a.ch);
System.out.print(a.num);
}}

解决方案 »

  1.   

     public void change(String str,char[] ch,int num){
     this.str = "test ok";
     ch[0] = 'g';
     this.num = 20;
     }你换成this.str ,this.num就全部改变了 要不然你str=""相当与String str=“” 根本不会给对象赋值 
      

  2.   

    对,就是这样,加上this才会改变类中的成员变量
      

  3.   

    你好,刚好今天看到这个知识点,看我的答案能否帮到你!Java里方法的参数传递方式只有一种:值传递。所谓值传递,就是将实际参数的副本(复制品)传入方法内。而参数本身不受任何影响。
    因为数组是引用数据类型,所以ch的值是一个确定的地址,这个在栈内存里的ch变量储存的是一个地址值,这个地址值对应的是堆内存里的一个空间,所以传递这个地址给方法的时候,数组可以改变,而其他的值如你写的str,num只是一个复制品,并不影响实例A的的成员变量。如果你在其前插入this,表示你要控制这个实例的成员变量,这样才能改变str和num的值。