//静态代码块,构造函数,构造代码块的执行顺序:e a b d f j b d hallo World!
class ToSequenced
{
static
{
System.out.println("a");//静态代码块优先于其他,且只有被主函数调用的类的静态才会执行,只执行一次 2
}
{
System.out.println("b");//先调用ToSequenced(intx),所以ToSequenced中的构造代码块先执行 3
//再次调用构造函数ToSequenced(intx)所以构造代码块再优先执行一次 7
}
ToSequenced()//没被调用,不执行
{
System.out.println("c");
}
ToSequenced(int x)
{
System.out.println("d");//被调用,执行 4
//new ToSequenced(6)调用再执行一次 8
}
}
class ToSequenced2
{
static
{
System.out.println("e");//主函数所在类的静态最先执行 1
}
{
System.out.println("f");//ToSequenced2(int x)被调用 ,构造代码块先于ToSequenced2(intx)执行 5
}
public static void main(String[] args)
{
new ToSequenced(4);//有变量所以执行的是ToSequenced(int x)
new ToSequenced2(5);
new ToSequenced(6);
System.out.println("Hello World!");//最后执行 9
}
ToSequenced2()
{
System.out.println("i");
}
ToSequenced2(int x)
{
System.out.println("j");//被调用执行 6
}
}
|