面试复习==内功心法(二)?值传递or引用:进则变 出则还原


一、复习的一些典型的 java中 值传递和地址(引用传递)的问题。


java中究竟是只有1中值传递方式,还是有2种方式:值传递和引用传递。到目前为止,仍然不是一个确认的问题,存在争议的问题大多不是一定要求个肯定。但是我们学习的人,一定要明白其中的干系,做到准确的判断和运用、阅读程序中的传递。


下面是一个例子:

package net.mldream.day2;

class Valhold {
	public int i = 10 ;
}

public class ObParm {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ObParm o = new ObParm() ;
		o.amethod() ;
	}
	
	public void amethod() {
		int i = 99 ;
		Valhold v = new Valhold() ;
		v.i = 30 ;
		another(v, i) ;
		System.out.print(v.i) ;
	}//end of amethod
	public void another(Valhold v, int i) {
		i = 20 ;
		v.i = 20 ;
		Valhold vh = new Valhold() ;
		v = vh ;
		System.out.print(v.i) ;
		System.out.print(i) ;
	}//end of another

}

该程序的结果为:10020


简单的总结:其值传递,当然相当于实参将自己的值大小传给了形参,并没有在原来的空间内存上做修改,实参和形参是两个不同的存储空间。所以在函数内部的对形参的修改不能改变原来实参变量的值。

对于所谓的引用传递,可以理解为是传递了一片空间,一个数据结构(存储块)的首地址(因为首地址往往都代表着以后的一片空间内存),通常其蕴含这样的原则:进入函数内部,则变化,而推出函数之后又还原。即:进则变,退则还原。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值