package com.qfedu.c_block;
/**
* 构造代码块
* @author 无形风
*/
class Dog {
static Dog dog = new Dog();
static Dog dog2 = new Dog();
public Dog() {
System.out.println("构造");
}
//构造代码块
{
System.out.println("构造代码块执行。。。。");
}
//静态代码块
static {
System.out.println("静态代码块执行");
}
}
public class Demo2 {
public static void main(String[] args) {
new Dog();
}
}
执行结果:
构造代码块执行。。。。
构造
构造代码块执行。。。。
构造
静态代码块执行
构造代码块执行。。。。
构造
main()程序入口
1,对象一建立就运行构造代码块了,而且优先于构造函数执行。 即构造代码块先于构造方法执行
2,静态代码块只执行一次
3,静态代码块是随着类的加载而执行,只执行一次,并优先于主函数。类调用时,先执行静态代码块,然后才执行主函数的。
4,静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。
5,静态按(从上到下,从左到右)顺序执行