目录
按值传递和按引用传递的区别?
- 值传递:方法调用时,实际参数把它的值的副本传递给对应的形式参数,此时形参接收到的其实只是实参值的一个拷贝,所以在方法内对形参做任何操作都不会影响实参
- 引用传递:当参数是对象的时候,其实传递的对象的地址值,所以实参的地址值传给形参后,在方法内对形参进行操作会直接影响真实内容。
如果传递的参数是八大基本类型的话,是值传递。
如果参数传递的是对象实例、数组或者是接口的话,看起来是引用传递,其实还是传对象地址值,是值传递。
public class CallByValue {
private static User user=null;
private static User stu=null;
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}
参考地址:深入理解--Java按值传递和按引用传递_有图有真相-CSDN博客_java 按值传递
Java基础------真实大厂面试题汇总(含答案)_王伟的博客-CSDN博客_java基础面试题大全



