Java构造函数、构造代码块和静态代码块的区别和调用时间

静态代码块:最早执行,被载入内存时执行,只执行一次。没有名字、参数和返回值,有关键字static。
构造代码块:执行时间比静态代码块晚,比构造函数早,和构造函数一样,只在对象初始化的时候运行。没有名字、参数和返回值。
构造函数:执行时间比构造代码块时间晚,也是在对象初始化的时候运行。没有返回值,构造函数名称和类名一致。

public class Constructor {

	public static void main(String[] args) {
		System.out.println("创建第一个对象:");
		Test test1 = new Test();
		System.out.println("");
		System.out.println("创建第二个对象:");
		Test test2 = new Test(5);
	}
}

class Test {
	// 静态代码块1
	static {
		System.out.println("我是静态代码块1");
	}
	// 构造代码块1:
	{
		System.out.println("我是构造代码块1");
	}

	// 构造函数1
	public Test() {
		System.out.println("我是无参构造函数");
	}

	// 构造函数2
	public Test(int t) {
		System.out.println("我是带参构造函数," + "参数是" + t);
	}

	// 静态代码块2
	static {
		System.out.println("我是静态代码块2");
	}

	// 构造代码块2:
	{
		System.out.println("我是构造代码块2");
	}
}

运行结果:
这里写图片描述
通过上面的程序运行结果,我们可以看出,静态代码块只会在类被载入内存时加载一次,是最先执行的,然后是构造代码块,最后才是构造函数。构造代码块和构造函数都是在对象创建的时候执行,有几个对象就会执行几次。

posted @ 2017-09-26 22:00  会写代码的放羊娃  阅读(3880)  评论(0编辑  收藏  举报