输出的结果为3和33;不明白为何不同 ,为何不都是3。
求大佬解答。
public class Apple {
static int value = 33;
public static void main(String[] args) throws Exception{
new Apple().printValue();
}
private void printValue(){
int value = 3;
System.out.println(this.value);
System.out.println(value);
}
}
this指代当前对象
如果方法中没重新声明value,那么this.value和value是相同的都是外部的那个value
但是方法内声明了局部变量,value就表示本方法中的value,而this.value表示外部的value
常用的还有this和super的比较,this指代当前对象,super指代当前类继承的父类
所以如果重写方法时,要保留父类逻辑的同时还要新增逻辑可以用到super
@override
public void save(Object a) {
a.num = 10;
super.save();
}
如果有帮到你的话请采纳下
这里面主要考察对this和static的理解。this代表什么?this代表当前对象,那么通过new Apple()来调用printValue的话,当前对象就是通过new Apple()生成的对象。而static变量是被对象所享有的,因此在printValue中的this.value的值毫无疑问是33。在printValue方法内部的value是局部变量,根本不可能与this关联,所以输出结果是33。在这里永远要记住一点:静态成员变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量都可以通过对象访问(只要访问权限足够)。
this.value是不对的,静态变量只能用类对象或类名调用。这里的value输出的必定是3,因为一个类中的同名变量,在使用时局部变量优先