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