参数传值机制

Java中,方法中所有参数都是“值传递”,也就是“传递的是值的副本”;也就是说,我们得到的是“原参数的复印件”,因此复印件改变不会影响原件。

基本数据类型参数的传值
  • 传递的是值的副本,副本改变不会影响原件。
引用类型参数的传值
  • 传递的是值的副本,但是引用类型指的是“对象的地址”,因此改变“副本不指向地址对象的值,也意味着原参数指向对象的值也发生了改变”。
多个变量指向同一个对象
package User4;

public class User4 {
	int id;
	String name;
	String pwd;
	
	public User4(int id,String name) {//带参构造初始化
		this.id=id;
		this.name=name;
	}
	public void testParameterTransfer01(User4 u) {//普通方法
		u.name="李四";
	}
	public void testParameterTransfer02(User4 u) {//普通方法
		u=new User4(200, "王五");//有new就产生新的对象
	}
	public static void main(String[] args) {
		User4 u4 = new User4(100, "张三");
		//将u4的地址传了过去,导致01中的u也指向原对象,因此可以改变原对象的属性
		u4.testParameterTransfer01(u4);
		System.out.println(u4.name);
		//由于产生了新对象,则两个引用指向的是不同对象也就是不同空间,因此不会改变原对象的属性
		u4.testParameterTransfer02(u4);
		System.out.println(u4.name);
	}
}

代码运行结果

猜你喜欢

转载自blog.csdn.net/weixin_40995778/article/details/82998536