2023-06-04 18:04:02

Java是值传递吗?

结论:Java是值传递,基本类型传递的是自身值的副本,引用类型传递的是引用地址的副本。

详细说明:

  • 值传递是指将实参复制一份传递到方法中,对形参的修改不会影响到实参

  • 引用传递是指将实参的地址传递到方法中,对形参的修改会影响到实参。

首先基本数据类型肯定都是值传递,因为基本数据类型是保存在栈帧中的,每个方法都是一个新的栈帧,所以对形参的修改不会影响到实参。

对于引用类型,实际的内容是存在堆内存或者字符串常量池中的,变量保存的是内容的地址值,对形参重新赋值也就是指向新的对象,是不会影响到实参的。

如果是引用传递,那么下面的实参应该也会修改,但并不会。

1
2
3
4
5
User user = new User("123","小明");

private void chage(User user){
user = new User("456","小鸡");
}
Prev
2023-06-04 18:04:02
Next