package com.itvip666.jucjvm;
class CodeBlock1 {
{
System.out.println("CodeBlock1 ************ 构造块111");
}
static {
System.out.println("CodeBlock1 ************ 静态代码块222");
}
public CodeBlock1() {
System.out.println("CodeBlock1 ************ 构造方法333");
}
}
/**
* 主类
* @author shenguangyang
*/
public class CodeBlock {
{
System.out.println("CodeBlock ************ 构造块444");
}
static {
System.out.println("CodeBlock ************ 静态代码块555");
}
public CodeBlock() {
System.out.println("CodeBlock ************ 构造方法666");
}
public static void main(String[] args) {
System.out.println("========================= 华丽的分割线 ========================= 777");
new CodeBlock1();
System.out.println("------------------------");
new CodeBlock1();
System.out.println("------------------------");
new CodeBlock();
System.out.println("------------------------");
}
}
输出结果
CodeBlock ************ 静态代码块555
========================= 华丽的分割线 ========================= 777
CodeBlock1 ************ 静态代码块222
CodeBlock1 ************ 构造块111
CodeBlock1 ************ 构造方法333
------------------------
CodeBlock1 ************ 构造块111
CodeBlock1 ************ 构造方法333
------------------------
CodeBlock ************ 构造块444
CodeBlock ************ 构造方法666
------------------------
Process finished with exit code 0
静态先行且只加一次
JVM语法规定:静态代码块先执行,再执行构造块,最后执行构造方法