为何输出结果是good gbc 10只有数组改变了????

public class Aed {
String str = new String("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) {
    Aed a = new Aed();
    a.change(a.str,a.ch, a.num);
    System.out.print(a.str);
    System.out.print(a.ch);
    System.out.print(a.num);
}

}

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


    改为

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

你这个是new的Aed这个对象,引用对象和值对象之间的区别

如果不加this.的话,change(String str,char[] ch,int num) 三个参数分别是:值传递、引用传递、值传递。所以只有这个引用传递的值被改变可。

除了8大基本数据类型和String算是值传递,其余的都是地址传递也叫引用传递引用传递,引用传递修改的是这个地址指向的堆中的内容,也就是修改的是堆中的值,所以改变了,而值传递出了这个方法就还是怎样就是怎样,如果在它前面加上this,那就指的是本类的属性,就会修改本类属性的值。