Java中,使用Final修飾一個變量,是引用不能變,還是引用對象不能變?
是引用對象的地址不能變,引用變量所指的對象的內容可以改變。
final變量永遠指向這個對象,是一個常量指針,而不是指向常量的指針。
比如: final StringBuffer sb=new StringBuffer("abc");
對sb重新賦值 sb=new StringBuffer("cde");
會出現編譯錯誤,被final修飾的變量是不能重新賦值的;
但是 sb.append("ced");
是可以編譯通過的。
Final作為一個修飾符:
- 可以修飾類、變量、方法
- 被final修飾的類不能被繼承。防止子類繼承重寫父類方法
- 被final修飾的方法不能被重寫
- 被final修飾的變量是一個常量只能被賦值一次。(既可以修飾成員變量,也可以修飾局部變量)
- 內部類定義在類中的局部位置上時,只能訪問該局部被final修飾的局部變量。