使用的两种情况:
- 当你想为某些特定数据创建一份内存空间,并且所有该类的对象共享一个域,而不去管该类的对象是否创建;
- 当你创建某个方法不想和它包含的类的对象想关联;
代码:
public class StaticFun{
static int i = 0;//static关键字声明的变量让该变量和该类的诸多对象无关;
public static void main(String ar[]){
StaticFun f1 = new StaticFun();
System.out.println(f1.i++);
StaticFun f2 = new StaticFun();
System.out.println(f2.i++);
System.out.println(i);
}
}
结果是:0,1,2
问题二: 无法从静态上下文中引用非静态!
这个错误在编译的时候一般都是在main方法中引用了非静态变量,原因是static的方法是可以脱离对象而调用的,非静态变量必须被对象所调用,如果在静态方法中引用了非静态变量,那么虚拟机不知道引用哪一个对象的该变量,自然出错;