目录
- 值传递:方法调用时,实际参数把它的值的副本传递给对应的形式参数,此时形参接收到的其实只是实参值的一个拷贝,所以在方法内对形参做任何操作都不会影响实参
- 引用传递:当参数是对象的时候,其实传递的对象的地址值,所以实参的地址值传给形参后,在方法内对形参进行操作会直接影响真实内容。
如果传递的参数是八大基本类型的话,是值传递。
如果参数传递的是对象实例、数组或者是接口的话,看起来是引用传递,其实还是传对象地址值,是值传递。
public class CallByValue {
private static User user=null;
private static User stu=null;
/**
* 交换两个对象
* @param x
* @param y
*/
public static void swap(User x,User y){
User temp =x;
x=y;
y=temp;
//如果这里set,x的属性会变化
//x.setName("lisi");
}
public static void main(String[] args) {
user = new User("user",26);
stu = new User("stu",18);
System.out.println("调用前user的值:"+user.toString());
System.out.println("调用前stu的值:"+stu.toString());
swap(user,stu);
System.out.println("调用后user的值:"+user.toString());
System.out.println("调用后stu的值:"+stu.toString());
}
打印结果:
调用前user的值:User{name='user', age=26}
调用前stu的值:User{name='stu', age=18}
调用后user的值:User{name='user', age=26}
调用后stu的值:User{name='stu', age=18}