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

来源:互联网 发布:excel表格数据对比 编辑:程序博客网 时间:2024/06/06 06:08

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

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

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

这里需要说明的是:如果局部变量的名字和全局变量的名字是一样的,全局变量会被隐藏,如果要将全局变量显示出来,则需要在前面加上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=9this.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=1t.changeVar(10, 10,10);System.out.println("After changeVar:"+t.getXYZ());//结果是After changeVar:x=10y=1z=10}}</span>
分析一下这输出的结果,最先输出的是Before changeVar:x=1y=1z=1这一行,结果全局变量一开始的初始化的值;接着输出是In changeVar:x=10y=10z=9这一行内容,因为在调用这个changeVar()方法的时候给全局变量赋值了,给局部变量也赋值,但是x,y因为和全局变量同名,而c本身一开始就赋值为9,所以结果是这样;最后输出After changeVar:x=10y=1z=10这一行,输出x为10,是因为在调用changeVar()这个方法的给x赋值为10,隐藏了全局变量,而此时输出x在方法中已经变为10,y为1是因为他是全局变量y,c为10的原因是成员变量z隐藏全局变量,但是this修饰词又调用本类的全局变量z。


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



0 0