final 修飾一個變量,有很多種說法,比如不能改變等等
准確的描述是 當一個變量被final修飾的時候,該變量只有一次賦值的機會
- 在聲明的時候賦值
i在第4行已經被賦值過了,所以這里會出現編譯錯誤
1 public class HelloWorld { 2 3 public void method1() { 4 final int i = 5; 5 6 i = 10; //i在第4行已經被賦值過了,所以這里會出現編譯錯誤 7 8 } 9 10 }
- 在聲明的時候沒有賦值
如果在聲明的時候未賦值,那么可以在后面代碼進行唯一的一次賦值
- final 修飾其他
final 除了修飾變量,還可以修飾類(不能夠被繼承),修飾方法(不能夠被重寫)
練習
如果final修飾的是參數,能否在方法里給這個參數賦值?
1 public class HelloWorld { 2 3 public void method1(final int j) { 4 j = 5; //這個能否執行? 5 } 6 }
答:無法執行,這個變量已經被final修飾了,一旦方法傳入了某個參數,就相當於是賦值了,不能再進行以后的賦值