java - 局部变量 - 函数间传递

1 篇文章 0 订阅

前言

局部变量在函数间的传递

1,参数为基本类型,传递前是什么值,不管局部函数内部如果运算,函数出栈,还是原值。

2,参数为实例类型,传递前已经初始化【!=null】,在局部函数内部修改该实例对象的变量,函数出栈,实例对象保持改变。

3,参数为实例类型,传递前未初始化【==null】,在局部函数内部初始化,并修改实力对象的变量,函数出栈,实例对象为null。


public class TestParam2 {
	public static void main(String[] args) {
		a();
	}
	public static void a() {
		List list = new ArrayList<String>();
		list.add("test");
		List list1 = null;
		String str = "a()";
		
		System.out.println("1," + str);//1,a()
		System.out.println("2," + list);//2,[test]
		System.out.println("3," + list1);//3,null
		
		aaa(str,list,list1);
		
		System.out.println("7," + str);//7,a() 【如果是基本类型,经过局部函数后,会恢复原值】
		System.out.println("8," + list);//8,[test, test2] 【如果是对象类型,且不为null,经过局部函数后,会改变对象】
		System.out.println("9," + list1);//9,null 【如果是对象类型,且为null,在局部函数创建该实力,并赋值,退出局部函数,恢复为null】
	}
	public static void aaa(String str,List list,List list1) {
		str = "aaa()";
		list.add("test2");
		list1 = new ArrayList<>();
		list1.add("list1");
		System.out.println("4," + str);//4,aaa()
		System.out.println("5," + list);//5,[test, test2]
		System.out.println("6," + list1);//6,[list1]
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值