public class Demo {
private String name;
public static void A(){
System.out.println(name);
System.out.println(B());
}
private int B(){
return 1;
}
}
上面的A方法是一个静态方法,想要打印name和B,但是会出现下面的提示
这是因为静态方法只能调用静态的方法和变量,那为什么呢?
变量的生命周期
- 静态变量的生命周期:从进程被创建就开始了,直到进程结束,他会一直存在
- 非静态变量的生命周期:从类实例化对象开始,直到实例对象被注销回收
- 静态方法的周期:从进程创建开始。
这也正是为什么叫做静态的原因,贯穿全局。
这就和好理解了,如果调用自身非静态的变量和方法都还没被创建,就相当于是没有定义的变量,自然不可能使用。