我们在内存分析和this的本质中,了解到java代码在内存中的执行顺序和分布情况,那么现在我们再来看一下静态代码块的执行顺序。
首先,我们知道构造方法用于对象的初始化,而静态初始化块,用于类的初始化操作!在静态初始化块中不能直接访问非static成员,因为非static成员是从属与对象的,而静态初始化块是从属于类的,静态初始化块执行的时候,对象还没有生成。
下面我们用代码来见证一下
public class TestStatic1 {
private String no;
private static String name;
static{
System.out.println("执行静态代码块");
name = "林高禄";
printName();
}
{
System.out.println("执行非静态代码块");
name = "麦迪";
printName();
}
public static void printName(){
System.out.println(name);
}
public static void main(String[] args) {
TestStatic1 t = null;
System.out.println("---------------