class Test{
int i = 0;
public static void main(String[] args){
int i = 2;
System.out.println(i);
}
}
输出的局部变量i 而不是全局变量i 为什么?
------解决方案--------------------
Java是这样规定的.
------解决方案--------------------
被覆盖了了
使用的是最里面的变量
------解决方案--------------------
Java遵循就近原则!!!
------解决方案--------------------
局部变量隐藏了实例变量,而且实例变量必须通过对象引用来调用
例如:new Test().i;
或者
Test t = new Test();
t.i
------解决方案--------------------
变量作用域的原因 java遵循小作用域大于大作用域的原则
会先输出局部变量 而不是成员变量 如果想输出成员变量用this.i
------解决方案--------------------
如果局部变量的名字与成员变量的名字相同,则成员变量被隐藏,则这个成员变量在这个方法中暂时失效
------解决方案--------------------
我怀疑你学过吗。》》》??????
------解决方案--------------------
zhaoxinmao() ( ) 信誉:100 Blog
耐心,hehe
------解决方案--------------------
补充一下子,你的程序里面main()是static方法是不能直接调用实例变量的
要用
new Test().i;
或者
Test t = new Test();
t.i
这样才能调用实力变量i
楼上这个是正解
------解决方案--------------------
變量優先級得考慮進去,何況,你的所謂全局變量是一般的全局變量,根本不會讓MAIN内的變量受到影響,所以,使局部變量的結果。明白沒有!接分ING
------解决方案--------------------
一个是方法的局部变量 一个类的实列变量```
STATIC 方法不能直接调用实列变量的!
------解决方案--------------------
这还问为什么?规定而已
------解决方案--------------------
晕,还不如用平实易懂的方式来解释,动辄“虚拟机运行本质”会吓死很多初学者
------解决方案--------------------
我们老师说这个是近亲原则
------解决方案--------------------
这个问题放到这里来问,唉,楼主基础的可以……
------解决方案--------------------
访问类变量
class Test{
static int i = 0;
public static void main(String[] args){\
System.out.println(i);
int i = 2;
}
}
------解决方案--------------------
访问类变量
class Test{
static int i = 0;
public static void main(String[] args){\
System.out.println(i);
int i = 2;
}
}
------解决方案--------------------
耐心。。。要照顾新人,大家都是从新手开始的。。。
------解决方案--------------------
我们要欢迎新人,而不是吓走新手,精神可佳,支持!
------解决方案--------------------
是不是 this.i就能输出0了?