方法传参过程

来源:拉勾教育Java就业集训营

方法的传参过程

int max(int ia, int ib) { … … … } 
int a=5; 
int b=6; 
int res = m.max(a,b);
  1. 为main方法中的变量a、b、res分配空间并初始化。
  2. 调用max方法,为max方法的形参变量ia、ib分配空间。
  3. 将实参变量的数值赋值到形参变量的内存空间中。
  4. max方法运行完毕后返回,形参变量空间释放。
  5. main方法中的res变量得到max方法的返回值。
  6. main方法结束后释放相关变量的内存空间。

在这里插入图片描述

参数传递的注意事项

  • 基本数据类型的变量作为方法的参数传递时,形参变量数值的改变通常不会影响到实参变量的数值,因为两个变量有各自独立的内存空间;
  • 引用数据类型的变量作为方法的参数传递时,形参变量指向内容的改变会影响到实参变量指向内容的数值,因为两个变量指向同一块内存空间
  • 当引用数据类型的变量作为方法的参数传递时,若形参变量改变指向后再改变指定的内容,则通常不会影响到实参变量指向内容的改变,因为两个变量指向不同的内存空间。
  • String类型作为方法的参数传递时,由于字符串存在常量池,字符串是不可变的,重新赋值相当于改变了指向,不会影响到实参变量指向内容的改变
/*
	参数传递的测试
*/
public class ArgTest{
	
	void show1(int ia){
		ia=20;
		System.out.println("show1方法:"+ia);  //20
	}
	
	void show2(int[] arr){
		arr[0]=20;
		System.out.println("show2方法:"+arr[0]); //20
	}
	
	void show3(int[] arr){
		arr=new int[]{20};
		System.out.println("show3方法:"+arr[0]); //20
	}
    
    void show4(String str){
		str="456";
		System.out.println("show4方法:"+str); //456
	}
	
	public static void main(String[] args){
		ArgTest at=new ArgTest();
		int ib=10;
		at.show1(ib); //20
		System.out.println("main中 ib:"+ib); //10
		
		int[] arr=new int[]{10};
		at.show2(arr);	//20
		System.out.println("main中 arr:"+arr[0]); //20
		
		int[] arr1=new int[]{10};
		at.show3(arr1);	//20
		System.out.println("main中 arr1:"+arr1[0]); //10
        
        String str="123";
        at.show4(str); 
        System.out.println("main中 str:"+str); //123
	}
}

基本数据类型的变量作为方法的参数传递时

在这里插入图片描述

引用数据类型的变量作为方法的参数传递时

在这里插入图片描述

引用数据类型的变量作为方法的参数传递时,若形参变量改变指向后

在这里插入图片描述

String类型作为方法的参数传递时,对形参重新赋值

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值