- 先建立一个简单测试类
public class Ch1 {
private static String company;
//private static String company="test";
private int i = 110;
static {
System.out.println("静态块");
System.out.println("company: " + company);
}
{
System.out.println("代码块");
System.out.println(i);
}
public Ch1() {
System.out.println("构造函数");
}
public static void main(String[] args) {
Ch1 c=new Ch1();
}
}
输出结果
可以看出在初始化一个对象的时候,是首先初始化静态变量,然后是静态代码块,然后是代码块,最后才是构造函数。
为了更加清晰看出静态变量和静态代码块的执行顺序,改一下代码
public class Ch1 {
//private static String company;
//这里和刚才不同了
private static String company="test";
private int i = 110;
static {
System.out.println("静态块");
System.out.println("company: " + company);
}
{
System.out.println("代码块");
System.out.println(i);
}
public Ch1() {
System.out.println("构造函数");
}
public static void main(String[] args) {
Ch1 c=new Ch1();
}
}
运行结果:
因为静态变量和静态代码块是不依赖对象存在的,所以在加载类的时候就会加载这些代码。方便调用,所以一般希望在项目一启动就执行的代码就会放在static里面。
单纯是为了做一下读书笔记,有什么不对的地方欢迎指正。