Java中值传递与引用传递

值传递

指基本数据类型在方法中的传递
在方法中改变属于局部变量的改变

	int n = 1;
	plus(n);
	System.out.println(n);

	public void plus(int num){
		num++;
		System.out.print(num);
	}

在值传递时,系统在栈内存声明临时变量int类型num,并把实参n的值"1"赋值给形参num,此方法整个执行中,操作的是变量num的值,最后输出num的值为:2
改变方法中此变量的值不会影响方法外值的结果,此方法运行结束后,临时变量被清除,输出n的结果依然为:1

引用传递

指引用数据类型在方法中的传递
传的是物理内存地址值

/**
 *学生类
 */
public class Student {
	String name;
}
/**
*测试类
*/
public class Test {
	public static void main(String[] args) {
		Student stu = new Student();
		stu.name = "张三";
		reName(stu);
		System.out.println(stu.name);
	}
	public static void reName(Student stu) {
		stu.name = "李四";
	}
}

在引用传递时,实参传递的是对象stu的内存地址,内存地址存储在栈内存,指向的对象具体存放在堆内存中,所以reName()方法中的对象stu和main()方法中的对象stu在内存地址里共同指向堆内存中的对象具体;
那么,在reName()方法里对此对象的name属性的值进行更改后,虽然在方法结束后reName的stu对象被清除,但main()方法里stu对象内存地址指向的依然是一个堆内存中的对象具体,所以最后输出name的值为:“李四”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值