java 方法的参数值传递机制

 尚硅谷java视频学习笔记:http://www.gulixueyuan.com/course/39/task/374/show#

 

方法的参数传递(重点、难点)

1、形参  : 方法声明时,方法小括号内的参数 ; 

      实参 : 调用方法时,实际传入的参数的值 ;

2、 规则:    java 中参数传递机制: 值传递机制

      1)、形参是基本数据类型的:将实参的值传递给形参的基本数据类型变量 ;

     2)、形参是应用数据类型的:将实参的引用类型变量的值(对应的堆空间的对象实体类的首地址值)传递给形参的引用类型变量 ; 

 

public class TestArgsTransfer {

	public static void main(String[] args) {
		
		TestArgsTransfer tt = new TestArgsTransfer() ; 
		int i  = 10 ; 
		int j = 5 ; 
		System.out.println("i:"+i +"j:"+j);  
	
//		交换变量i和j 的值 ; 
		int tem = i ; 
		i = j ; 
		j = tem ; 
		
		tt.swap(i, j) ; 
		System.out.println("i:"+i +"j:"+j);
		
	}

}

//  值交换成功 

 

  

对上面值交换代码封装一下如下 :

public class TestArgsTransfer {
	
	public static void main(String[] args) {
		
		TestArgsTransfer tt = new TestArgsTransfer() ; 

		int i  = 10 ; 
		int j = 5 ; 
		System.out.println("i:"+i +"j:"+j);  
		
//		对应图1 :
//		交换变量i和j 的值 ; 
//		int tem = i ; 
//		i = j ; 
//		j = tem ; 
		tt.swap(i, j) ; 
		System.out.println("i:"+i +"j:"+j);
	}
	
//	此方法交换值失败 ; 	
	public void  swap(int i ,int j){
		int tem = i ; 
		i = j; 
		j = tem ; 
		
	}

}

运行后发现值并没有交换成功。实际是调用方法时,在栈中创建了两个新的参数名为 i 和 j 的变量,整个方法内的数据交换操作的是新的  i 和 j , 所以打印出来 结果并没有变化。 原理如下

       

 

实现值的交换代码如下:

public class TestArgsTransfer1 {
	
		public static void main(String[] args) {
			TestArgsTransfer1 tt  = new TestArgsTransfer1() ; 
			
			DataSwap ds = new DataSwap() ; 
			System.out.println("ds.i:"+ds.i+"ds.j:"+ds.j);
		
			tt.swap(ds) ; 
			System.out.println("ds.i:"+ds.i+"ds.j:"+ds.j);
		
		}
		
//		交换元素的值; 
		public  void swap(DataSwap d){
			int tem = d.i ; 
			d.i = d.j ; 
			d.j = tem ; 
		}

}

class DataSwap{
	
	int i = 10 ; 
	int j = 5 ; 
	
}

原理如下:

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值