步骤的参数传递

步骤的参数传递

方法的参数传递

    先看一段代码:

public class Dog{
    private String name;

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name = name;
    }
}
--------------------------------------------------------

public class Person{
    public void add(int num){
        num += 20;
        System.out.println("in:"+num);
    }

    public void changeName(Dog dog){
        dog.setName("旺财");
    }
}

--------------------------------------------------------

public class Test{
    public static void main(String[] args){
        Dog dog = new Dog();
        dog.setName("阿黄");
        Person person = new Person();
        int i = 10;

        person.add(i);
        person.changeName(dog);

        System.out.println(i);
        System.out.println(dog.getName());
    }
}

执行的结果如下的截图:

步骤的参数传递

    1、在person对象调用的两个方法,分别被传入了一个基本数据类型的参数,一个引用数据类型的参数。可以看出在Test类中,输出i的值仍然是10,而dog的名字却变成了“旺财”。

       2、结论:在方法参数的传递时,对于基本数据类型的参数,是将数值复制了一份,传给了方法的参数,自身仍然不变;而对于引用数据类型,则是将该变量的地址赋值给了方法的参数,故当方法将所指向内存的内容修改后,在返回这个引用变量时,其值已经被改变了。即:基本数据类型按值传递;引用数据类型按引用传递。