全局变量和局部变量同名时操作

本文通过实例详细介绍了局部变量和全局变量的概念及作用域。解释了当局部变量名称与全局变量相同的情况时如何通过this关键字访问全局变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

局部变量和全局变量的名词解释

局部变量:作用域作用一个方法或者一个代码块里面的变量。

全局变量:作用域为整个类,类里面的所有方法都能使用这个变量(全局变量不用进行初始化,它具备自动初始化的功能)。

这里需要说明的是:如果局部变量的名字和全局变量的名字是一样的,全局变量会被隐藏,如果要将全局变量显示出来,则需要在前面加上this修饰词。下面结合一个列子来说明这点内容。

<span style="font-size:14px;color:#3333ff;background-color: rgb(192, 192, 192);">public class Test {
	private int x=1;
	private int y=1;
	private int z=1;
	
	void changeVar(int a,int b,int c){
		x=a;//给全局变量赋值
		int y=b;//y使同名全局变量隐藏
		int z=9;//z使同名全局变量隐藏
		System.out.println("In changeVar:"+"x="+x+"y="+y+"z="+z);
		//结果是In changeVar:x=10y=10z=9
		this.z=c;//给全局变量z赋值
	}
	String getXYZ(){
		return "x="+x+"y="+y+"z="+z;
	}
	
	public static void main(String[] args) {
		Test t=new Test();
		System.out.println("Before changeVar:"+t.getXYZ());
		// 结果是Before changeVar:x=1y=1z=1
		t.changeVar(10, 10,10);
		System.out.println("After changeVar:"+t.getXYZ());
		//结果是After changeVar:x=10y=1z=10
	}
}</span>

分析一下这输出的结果

  • 最先输出的是Before changeVar: x=1 y=1 z=1这一行,结果全局变量一开始的初始化的值;
  • 接着输出是In changeVar: x=10 y=10  z=9这一行内容,因为在调用这个changeVar()方法的时候给全局变量赋值了,给局部变量也赋值,但是x,y因为和全局变量同名,而c本身一开始就赋值为9,所以结果是这样;
  • 最后输出After changeVar: x=10 y=1 z=10这一行,输出x为10,是因为在调用 changeVar() 这个方法的给x赋值为10,隐藏了全局变量,而此时输出x在方法中已经变为10,y为1是因为他是全局变量y,c为10的原因是成员变量z隐藏全局变量,但是this修饰词又调用本类的全局变量z。


附注--如果有什么值得修改的不到之处,还请指正。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值