public class Test11{
private int id;
public static void main(String[] args){
Test11 t = new Test11();
t.m1();
System.out.println(id); //此行的错误在于静态的主方法内不可直接调用非静态的实例变量或实例方法
t.m2();
System.out.println(t.id); //私有的实例变量需要由对象调用
t.m3(15);
System.out.println(Test11.id); //此行错误 只有静态变量才可以用类名.调用
}
public void m1(){
this.id = 45; //调用m1方法改变了成员变量id的值为45
System.out.println(id);
}
public void m2(){
Test11.id = 45; //此行错误 只有静态变量才可以用类名.调用 实例变量不可以这样调用
System.out.println(id);
}
public static void m3(int id){ //此行正确因为方法体中的id为形参列表中的局部变量非类中实例变量
id = 45; // 此方法体中的id虽然由t.m3(15)传入了15但是方法中又给id赋值为45
System.out.println(id); //此行输出最终为45 但是仅为局部变量的值 不影响成员变量的值
public static void m4(int id){
this.id = 45; // 此行错误因为在静态方法中用 this.id 调用了类中的实例变量
System.out.println(id);
}
}
java 中this调用静态变量及实例变量的若干错误
最新推荐文章于 2023-04-11 00:01:30 发布