Java静态变量初始化及构造函数的执行顺序与执行时机分析

    对于Java初学者来说,关于静态变量、非静态变量的初始化时机与顺序,以及构造函数的执行时机与顺序都会感觉有点理不清头绪,下面文章使用实例程序帮大家解决这方面的疑惑。虽然简单,但是对Java入门者来说还是有一定的帮助作用。

    预备知识:

  1. 代码等价于:
  2. 代码 等价于: 
  3. static块中的初始化代码按其在源代码中的位置顺序执行。

    以上内容大家可以参考文章:http://hi.baidu.com/suofang/blog/item/362d4ea77fa5c099d14358cf.html 

     接下来我们对静态变量初始化、非静态变量初始化及构造函数的执行时机与执行顺序进行分析,首先我们编写了一个类,代码如下:

    在这段代码中,包括了静态变量与非静态变量的初始化代码,还有构造函数,为了验证这些代码的执行时机与执行顺序,我们进行了如下实验:

  1. 在主类中使用Zz类的静态变量,代码如下:显示结果:
  2. 在主类中调用Zz类的静态函数,代码如下:显示结果:
  3. 在主类中声明Zz类变量,但不实例化,代码如下:显示结果:无任何内容。
  4. 在主类中声明Zz类变量,并实例化,代码如下:显示结果:

     结论:

  1. 仅仅在代码中申明了一个类变量,并不会执行该类的任何变量初始化代码,更不用说构造函数。
  2. 在代码中申明了一个类变量,并实例化,则依次执行该类的如下代码:静态变量初始化代码->非静态变量初始化代码->构造函数代码。
  3. 在代码中使用或者调用了一个类的静态成员(包括静态变量与静态函数),则会触发执行该类的静态变量初始化代码,但不会执行构造函数代码。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值