一个超基础,但是不知道为什么
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了?