当声明一个事物为static时,就意味着这个域或方法不会与包含它的类的任何实例化对象关联在一起。
首先来看一个例子
/**
* static关键字解析
*/
public class Static {
static int i = 0;
public Static() {
i++;
}
public static void main(String[] args) {
Static static1 = new Static();
Static static2 = new Static();
System.out.println(static1.i);
System.out.println(static2.i);
}
}
输出结果为
2
2
由此可知,即使创建了两个对象,Static.i也只有一份存储空间,这两个对象共享一个i。static1和static2指向同一个存储空间,因此它们具有相同的值2。
接着讲讲java程序的执行顺序,由于代码包含在多个类中且简单,在此处不贴,直接看结果
我是父类静态代码块
我是子类静态代码块
我是父类非静态代码块
我是父类构造
我是子类非静态代码块
我是子类构造
我是子类方法eat
我是子类方法sleep
以上就是java的初始化顺序。