对于final变量的赋值,JVM对其是有限制的。为了保证安全性只允许其被赋值一次。
例如下面的程序就是不合法的:
虽然程序本身可能没有什么错误,但是Java的编译器认为这样是不安全的。解决办法有很多,下面给个不错的解决办法:
如上所示,不仅解决了问题(final只被赋值了一次),还增加了程序的可读性。
***********************************************************************************************************************************
如下代码就是合法的:
if...else语句和try...catch语句不同。if语句中的执行之后,else中的是不可能执行的。所以,以上代码是安全的。但是try...catch语句就不同了。try中的语句执行之后,抛出异常又会执行catch语句中的。所以try...catch对final变量赋值是通不过Java编译器的。