static
不能用于局部变量,只能作用于域(同样初始化后的值是默认的,基本数据一般就是0那些,对象为null)- 对于存储来说,只占用一份存储区域,且是在类加载前存储。而这个存储(创建)是发生在调用了对应的类对象时的。
public class TestStatic {
public static void main(String[] args) {
System.out.println("test1 " + testClass.test1);
System.out.println("testString " + testClass.testString());
}
}
class TestClass {
static int test1;
static {
int testBlock = 1;
System.out.println("testBlock" + testBlock);
}
static String testString() {
return "Test the String is ok";
}
}
- 首先创建对象是在调用TestClass后产生的,然后这里就涉及到了初始化的顺序,首先创建对象时,是先初始化类中定义的static域,比如说test1会默认值为0,static block执行了其中的println语句,然后再到方法的创建。
testBlock1
test1 0
testString Test the String is ok
(This is the result)