示例代码:
class TestJz{
public TestJz() {
System.out.println("构造函数!");
}
{
System.out.println("构造块");
}
static {
System.out.println("静态代码块");
}
}
public class Test {
public Test() {
System.out.println("Test构造函数!");
}
{
System.out.println("Test构造块");
}
static {
System.out.println("Test静态代码块");
}
public static void main(String[] args) throws Exception {
System.out.println("---------------");
new TestJz();
System.out.println("---------------");
new TestJz();
System.out.println("---------------");
new Test();
}
}
执行结果:
Test静态代码块
---------------
静态代码块
构造块
构造函数!
---------------
构造块
构造函数!
---------------
Test构造块
Test构造函数!
结果分析:
JVM语法规定加载优先级 静态的>构造块>构造方法
所有加载,静态先行,加载一次。静态方法存在方法区。方法区存的模板,模板只有一份,所以静态方法执行一次。
main方法是一切程序的入口。