<Java语言>值传递与引用

  Java中由于没有指针,因此对于值传递和引用的区分,不是特别的标记明显。如果传入的参数是一般类型,则为值传递;如果是类的对象,那则是引用传递,传入的是该对象的引用,指向该对象。

 例子如下:

public class FartherJava {
	public class SubJava{
		private String subit = null;
		public void SubJava(){
			subit = "subJava";
			System.out.println("SubJava:subit="+subit);
		}
		public void subChange(){
			subit = "subChange";
		}
		public void subPrint(){
			System.out.println("subPrint subit="+subit);
		}
	}
	
	private int g_int = 0;
	private short [] buffer = {1,2};

	public FartherJava() {
		g_int = 0;
		int i = 1;
		String j="fartherJava";		

		System.out.println("FartherJava i="+i);
		fartherChange(i);
		System.out.println("FartherChange i="+i);
		System.out.println("FartherJava j="+j);
		fartherChange(j);
		System.out.println("FartherChange j="+j);
		changeStructData();
		System.out.println("changeStructData g_int="+g_int);
		System.out.println("changeStructData buffer[0]="+buffer[0]);
		SubJava sjJava = new SubJava();
		changeSubJava(sjJava);
		sjJava.subPrint();
	}
	
	public void changeSubJava(SubJava sjava)
	{
		sjava.subPrint();
		sjava.subChange();
	}
	
	public void fartherChange(String j){
		j = "fartherChange";		
	}	
	
	public void fartherChange(int i){
		i = 2;	
	}
	
	public void changeStructData(){
		System.out.println("FartherData g_int="+g_int);
		g_int = 1;
		System.out.println("FartherData buffer[0]="+buffer[0]);
		buffer[0] = 3;		
	}	
	
	public static void main(String args[]) {
		FartherJava m = new FartherJava();		
	}
}

结果:

FartherJava i=1
FartherChange i=1
FartherJava j=fartherJava
FartherChange j=fartherJava
FartherData g_int=0
FartherData buffer[0]=1
changeStructData g_int=1
changeStructData buffer[0]=3
subPrint subit=null
subPrint subit=subChange

从结果可以看出:对int、string以及short数据的都是值传递,未改变原值,对subJava对象的是引用传递,改变了其成员变量的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值