有以下一种场景。java
1.在文件PaymentConfig.java中存在以下变量public static final desc="描述"jvm
2.类Test.java中使用了desc变量,String xxDesc = PaymentConfig.desc.spa
问题描述:因为业务缘由须要更改desc变量,因而我更改desc="描述123",将PaymentConfig.java从新编译部署。部署
可是在生成环境中Test类取得的xxDesc仍然是"描述",而不是"描述123"。编译
解决办法:反编译Test.class能够看到String xxDesc ="描述";这意味着,在编译期间,jvm就把xxDesc赋值为"描述"了。class
因此出现了上面的问题。变量
所以在发布程序的时候须要吧Test.class从新编译发布。引用
-------------------------------------------------------------------程序
final的不可变性,是在编译期肯定的,任何一个引用了final变量的类中变量,该变量都被jvm在编译时指定了指定字符。static