java静态块和构造器执行时间的区别

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值