写如下两个类:
运行:
运行之后在对final_static执行反编译工具的设置:https://www.cnblogs.com/tkg1314/p/13990552.html
可以发现反编译过程中先是声明的int age,但是并没有对其进行赋值操作,而是在下面的静态代码块中进行
也就是说没有final关键字先是声明然后再去执行静态代码块赋值,如果没有静态代码块的执行就没有值;
但是对age加了一个final之后
运行结果:
发现并不会执行静态代码块,反编译之后:
发现刚开始声明的时候已经进行了赋值
也就是说,final关键字声明的变量,改变了变量的初始化顺序