Java虚拟机_05

关于接口的基本特点:

改变常量定义位置

结果改变:

原因分析:

当一个类调用静态方法的时候,对该类算是主动使用,初始化顺序.

先在虚拟机中给counter1赋值为0,counter2变为0.然后再初始化Singleton对象,

这时候counter2=1,接下来初始化,counter2被覆盖为0.

所以打印counter2为0

在主动使用类的初始化之前,会给静态变量赋值.

初始化过程如下:

Counter1被赋值为0

Singleton被赋值为null

Counter2被赋值为0

初始化之后,counter没有变.仍为零.

Singleton被创建,执行构造函数,其中的counter1++;counter2++;

Counter1,counter2都变为1

后来再接着初始化counter2,counter2变为0

两个常量打印的都是1

初始化过程:

先进行解析,这时候将静态变量赋初值:

         Counter1=0

Singleton=null;

Counter2=0;

初值赋完之后,完成初始化:

         Counter1=1;

Slingleton调用构造函数,counter+1=2,Counter2=1;

最后,counter2=0

结果如下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值