呵呵同学:
public static void show()
{
System.out.println("::::");
this.haha();
}
写上this.haha() 是会报错的,,this是代表对象,没有对象就没有任何代表,this这个引用他都没有被初始化过,他怎么能去调用内容呢,,,
此时没有对象,这个静态方法 show()要访问的是对象的.haha(),你连对象都没有,这个.haha()就没在内存中存在过,因为先来后到,静态先在了,那个非静态还没在,我当然不能访问你了
所以;静态方法只能访问静态成员(方法和变量)。
顺便说说静态成员的特点:
1.随着类的加载而加载
比如: Person类当被你使用到的时候, Person类就进内存了这个Person类一进内存的时候,这个静态的country 就已经存在了,就是说当我这个Person类一加载到内存当中,这个country = "CN" 这个值就已经在内存中开辟好了空间
也就是说:静态会随着类的消失而消失。说明它的生命周期最长。 Person类只要还在,这个"CN" 就一直在内存当中,类没了那么CN"就在内存中消失了
注意:当我这个Person类加载到内存当中的时候,country就已经在内存里了,name不在内存里,因为只有创建了对象以后,堆内存里才有name
2.优先于对象存在
明确一点:静态是先存在的。对象是后存在的。
3.被所有对象所共享
4.可以直接被类名调用
使用注意:
静态方法只能访问静态成员
静态方法中不可以写this,super关键字
|