全局变量和局部变量同名时操作,全局变量局部变量
分享于 点击 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。
附注--如果有什么值得修改的不到之处,还请指正。
相关文章
- 暂无相关文章
用户点评