• Java 中只有值传递,没有引用传递。所有方法传参都是传递实参的副本。

  • 基本数据类型:拷贝的是真实的数据值;修改形参,外部变量不受影响。

  • 引用数据类型:拷贝的是对象的地址值(引用)。

    • 如果通过拷贝出来的地址修改堆中对象的成员属性,原始对象会受影响;
    • 如果直接给形参重新赋值 u=new User(),只是修改副本引用,外面实参完全不受改变。

就比如:

public static void main(String[] args){
	int num=10;
	changeValue(num);
	sout(num);//10
}

public static void changeValue(int a){
	a=20;//这里传入的是num的副本
}

拷贝的是对象地址,原始属性会被影响