有以下一種場景。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