Java回顾---值引用和引用传递

在谈值传递和引用传递之前,我觉得应该先说一下什么是形参和实参:

  • 形参:指一个方法被调用时需要传入的参数,传入方法的参数。
  • 实参:指一个方法被调用时传入的实际值。

先说一下定义吧:

  • 值传递:方法被调用时,实参通过形参将它内容的副本传入方法内部。
  • 引用传递:方法被调用时,实参将他的地址传给形参。

值传递

对于值传递,一般都是对于Java中基本数据类型而言的,比方说我有一个方法需要传入一个int值i ,然后里面的代码就是i=i+1,我再传入一个i进去的话,我输出这个i,传入前和传入后的值没有变化。

因为他只是将实参i的值传给了形参i,方法里面的操作都是对于形参i来说的,所以对于实参i,方法里面的操作对他来说完全没作用,所以实参i的值还是没任何变化。

引用传递

而引用传递则不同。引用传递最简单的例子就是C和C++中的指针,比方说我现在需要交换两个变量的值,就可以写一个swap函数将两个变量的指针传进去。

Java到底有没有引用传递

但是其实可以这样说,Java是没有引用传递的。我们举一个例子,比方说我现在有一个类Person,里面有些getset方法,然后我再main方法里new一个Person的对象,然后调用了一个方法,方法需要传入这个person对象,并在方法中对这个对象调用set方法,输出的话确实是新的数据。但是如果我在方法中让这个person对象等于new Person构造方法,如果按照引用传递的话,他就会输出我这个新的Person对象的数据,但是他还是输出的原数据,所以Java只有值传递。

public static void PersonCrossTest(Person person){
		System.out.println("传入的person的name:"+person.getName());
		person=new Person();//加多此行代码
    person.setName("我是张小龙");
    System.out.println("方法内重新赋值后的name:"+person.getName());
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值