java中使用final關鍵字修飾一個變量時,是引用不能變,還是引用的對象不能變?
是引用對象的地址值不能變,引用變量所指向的對象的內容是可以改變。
final變量永遠指向這個對象,是一個常量指針,而不是指向常量的指針。
例如:final StringBuffer sbu = new StringBuffer(“abc”);
在對其進行重新賦值
sbu = new StringBuffer(“”);
會出現編譯錯誤,被final修飾的變量是不能被重新賦值的。
sbu.append(“d”);
是可以編譯通過的;
final:最終。作為一個修飾符
1、可以修飾類、變量、函數。
2、被final修飾的類不可以被繼承。為了避免被繼承,被子類復寫功能。
3、被final修飾的方法不可以被復寫。
4、被final修飾的變量是一個常量只能賦值一次,既可以修飾成員變量,也可以修飾局部變量。
當在描述事物時,一些數據的出現值是固定的,那么這時為了增強閱讀性,都給這些值起個名字,方便於閱讀。
而這個值不需要改變,所以加上final修飾,作為常量:常量的書寫規范所有字母都大寫,如果由多個單詞組成,單詞間通過_連接。
5、內部類定義在類中的局部位置上時,只能訪問該局部被final修飾的局部變量。