目录
final修饰的是在编译时不能确定值,只有在运行时才能确定的值,所以它是一个运行时常量
static
小试牛刀1
下面程序的输出结果:
1:SingleTon singleTon = SingleTon.getInstance();调用了类的SingleTon调用了类的静态方法,触发类的初始化
2:类加载的时候在准备过程中为类的静态变量分配内存并初始化默认值 singleton=null count1=0,count2=0
3:类初始化,为类的静态变量赋值和执行静态代码块。singleton赋值为new SingleTon()调用类的构造方法
4:调用类的构造方法后count=1;count2=1
5:继续为count1与count2赋值,此时count1没有赋值操作,所有count1为1,但是count2执行赋值操作就变为0
初始化顺序:static块初始化-》static变量赋值-》static方法 (先父类、再子类。其父类已经初始化过了,所以不会再进行父类的初始化)
小试牛刀2
下面程序的输出结果:
结果:
小试牛刀3
final
在编译时就能确定的值,属于编译时常
final修饰的常量,不会触发类的初始化
final修饰的是在编译时不能确定值,只有在运行时才能确定的值,所以它是一个运行时常量