被声明为static的变量本质上是全局变量。当声明该类的对象时,不生成static变量的副本,类的所有实例共享同一个static变量。
声明为static的方法有几条限制:
它们仅可以调用其他static方法。
它们只能访问static数据。
它们不能以任何方式引用this或super
class Usestatic {
static int a=3;
static int b;
static void methK(int x){
System.out.println(x);
System.out.println(a);
System.out.println(b);
}
static {
System.out.println("Static block initialized.");
b=a*4;
}
public static void main(String [] args){
meth(42);
}
}
一旦装载了UseStatic类,所有的static语句都被运行。首先,a被设置为3,然后static块执行,最后,b被初始化为a*4或12.然后执行main(),main()调用meth(),把42传递到x。三条println()语句引用两个static变量a,b以及局部变量x。
输出:
Static block initialized
42
3
12