欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

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

来源: javaer 分享于  点击 135 次 点评:44

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


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

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

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

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

<span >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。


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



相关文章

    暂无相关文章
相关栏目:

用户点评