上午在写HBase访问测试用例的时候看到很多常量都用了静态常量的方式,于是就想了想它和final常量的区别。
我们知道java类在加载过程中先加载static类型的代码块变量,
而在实例化对象过程中不会再被修改。而final常量会在对象实例化过程中被初始化。
可看下面例子:
最终输出结果为:
- sf : a=15
- sf : B=18
- --------------
- sf1 : a=13
- sf1 : B=18
从结果可以看出private static final int 类型的B在类加载初始化后值不会再发生改变所以实例化两个对象后值都是18,而final int类型的常量A在两个对象中值是不一样的。