java代码块执行顺序_JAVA代码块执行顺序分析测试

在实际的工作过程中,几乎从没用过JAVA的代码块。不过既然做了这方面的学习与测试,就索性记录下来防止忘记。同一个招式,圣斗士是不会学习第二遍的...

首先,上代码:

public class CodeBlockTest {

public CodeBlockTest(){

//构造函数代码块

System.out.println("this is construct!");

{

System.out.println("this is construct code block!");

}

}

//静态代码块

static{

System.out.println("this is static code block!");

}

//普通代码块

{

System.out.println("this is code block!");

}

@SuppressWarnings("unused")

public static void main(String[] args){

{

System.out.println("你会不会忽然的出现..?");

}

CodeBlockTest cbt = null;

{

System.out.println("在街角的咖啡店..?");

}

cbt = new CodeBlockTest();

}

}

直接右键运行,测试结果如下:

this is static code block!

你会不会忽然的出现..?

在街角的咖啡店..?

this is code block!

this is construct!

this is construct code block!

从输出的结果来看,静态代码块应该是在类加载的时候就开始执行,普通代码块则在类实例化之后第一时间执行,之后是构造函数,构造函数代码块。。。

接下来引入子类:

public class SonCodeBlockTest extends CodeBlockTest{

public SonCodeBlockTest(){

System.out.println("This is son construct!");

}

static{

System.out.println("This is son static block!");

}

@SuppressWarnings("unused")

public static void main(String[] args){

SonCodeBlockTest son = new SonCodeBlockTest();

}

}

右键执行之,结果如下:

this is static code block!

This is son static block!

this is code block!

this is construct!

this is construct code block!

This is son construct!

很明显,由于类的加载顺序,执行顺序是:父类的静态代码块-->子类的静态代码块-->父类的普通代码块-->父类的构造函数-->子类的普通代码块(如果有的话)-->子类的构造函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值