关于类的加载

今天编了个程序,把静态成员变量的放置顺序变了一下,结果也变了。

运行结果是:

obj.counter1=100
obj.counter2=10
obj.counter3=6

现在把顺序变一变如下:

运行结果是:

obj.counter1=101
obj.counter2=11
obj.counter3=7

 

以上把静态变量的放置顺序变了一下,为什么结果都变了呢?

答案是:

如果有静态变量,那么先构造静态变量,如果有多个静态变量那么按顺序初始化,实际上构造函数也相当于一个静态方法。
对于程序一:

上述Singleton obj = Singleton.getInstance(); 执行构造函数,此时counter 1、2、3实际上并未被初始化只是被都预初始化为0

所以构造函数结束后counter 1、2、3都等于1。然后三个变量都被依次初始化,为100,10,6 。

对于程序二:

三个变量都被依次初始化,为100,10,6。然后执行Singleton obj = new Singleton(),此时三个变量都加一,所以结果为:100,11,7。

记住:静态变量是按顺序初始化的。未初始化前都被预初始化(例如:int变量=0).

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值