为什么this.static_variable在引用实例变量而不是java中的Class时没有给出错误


class Test {
int instance_variable ;
static int static_variable  = 15;
Test(int abc){
this.instance_variable = abc;
}
static void sget (){
System.out.println(static_variable);
}
void get(){
System.out.println(this.static_variable + " from static ");
System.out.println(instance_variable + " from instance  ");
this.static_variable = 90;
}
}
public class ABC {
public static void main(String[] args) {
Test t1 = new Test(10);
Test t2 = new Test(13);
t1.get();
t2.get();
//        Output
//        15 from static from obj
//        10 from instance from obj
//        90 from static from obj
//        13 from instance from obj
}
}

正如你所看到的,我可以使用this.static_variable

我已经调试了这个程序,我看到它不包含静态变量时,它如何能够给出静态变量的值?

它应该在这一行抛出错误,我还可以从实例方法void get中打印一个静态变量。

以上代码中没有错误点。静态成员始终具有全局作用域。使用构造函数将值传递给全局变量并没有错。即使不引用这个关键字也会产生同样的结果this关键字指向short全局变量中的实例变量。因此,静态变量也将保持相同的定义。

最新更新