java:静态块和构造器执行时间的区别。
静态块:是一个java类中的static所包含的一段程序。主要是用来在程序中初始化一些常量,并且这些常量在这个类中是全局变量。例如:
static{
System.out.println("father");
}
静态块在程序实例化这个类的时候调用,而且只执行一次,就是说在这个类实例化后,这个静态块已经执行过,那么它将不会再次执行。在所有的类中,静态块总是先从父级开始执行,从上网下执行所有的静态块。
如:
public Grand(){
System.out.println("grandfather constructor");}
构造器在程序中执行的时间也是在程序实例化这个类的时候调用,他与静态块不同点在他每实例化一次就执行一次,而且他总是在静态块执行之后执行,豫静态块相同的地方都是先从父级开始执行,从上往下执行所有的构造器。
父类:
public class Father {
public Father () {
System.out.println("father constructor");
}
static {
System.out.println("father");
}
}
子类:
public class Grand extends Father {
static {
System.out.println("gand");
}
public Grand() {
System.out.println("gand constructor");
}
}
测试类:
public static void main (String[] args) throws Exception {System.out.println("begin");
Grand g = new Grand();
Class c = g.getClass().getClassLoader().loadClass("Grand");
System.out.println("加载类成功");
System.out.println("准备实例化");
Grand g2 = (Grand)c.newInstance();
System.out.println("实例化成功");
}
执行结果:
begin
father
gand
加载类成功
准备实例化
father constructor
gand constructor
实例化成功
转载:http://blog.sina.com.cn/s/blog_7f73e06d01015yd7.html