使用final關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變?
物件可變,引用不可變
使用final關鍵字修飾一個變數時,是指引用變數不能變,引用變數所指向的物件中的內容還是可以改變的。例如,對於如下語句:
final StringBuffera=new StringBuffer("immutable");
執行如下語句將報告編譯期錯誤:
a=new StringBuffer("");
但是,執行如下語句則可以通過編譯:
a.append(" broken!");
有人在定義方法的引數時,可能想採用如下形式來阻止方法內部修改傳進來的引數物件:
public void method(final StringBuffer param){
}
實際上,這是辦不到的,在該方法內部仍然可以增加如下程式碼來修改引數物件:
param.append("a");
相關文章
- 非const引用不能指向臨時變數變數
- Java物件及物件引用變數Java物件變數
- Java之private關鍵字修飾成員變數Java變數
- js如何判斷一個變數是物件還是nullJS變數物件Null
- const修飾符的使用(修飾結構體指標,引用外部的const 變數)結構體指標變數
- 給物件引用變數賦值(轉)物件變數賦值
- js如何判斷一個變數是數字還是數字字串JS變數字串
- 【C++】為什麼不能定義陣列的引用,卻可定義變數的引用C++陣列變數
- js如何判斷一個變數是陣列還是其他物件JS變數陣列物件
- javascript中怎麼判斷某變數是null,undefined,還是不存這個變數 ? 以及變數是array 還是 object 還是 null ?JavaScript變數NullUndefinedObject
- awk引用shell變數變數
- PHP匿名函式使用use關鍵詞引用外部空間變數PHP函式變數
- Python學習之變數、物件和引用Python變數物件
- JavaScript中的安全變數引用JavaScript變數
- 變數和引用 Linux變數Linux
- Less tips:宣告變數之前可以引用變數!變數
- db4o的使用問題-一個環狀引用導致的物件儲存重複--物件的屬性是引用其他物件,如果這個引用物件變化了,db4o也認為物件發生了改變,就儲存兩次??物件
- javascript判斷一個變數是否是數字JavaScript變數
- const關鍵字在C與C++中修飾變數的區別C++變數
- 一鍵變老,一鍵還童,一鍵變性!這個全球霸屏的 FaceApp 到底是個啥?APP
- 【教程】(Angular)模版引用變數的魔法Angular變數
- VBScript中引用ASP的字串變數字串變數
- Makefile引用與環境變數變數
- 物件與引用,static關鍵字,程式碼塊,包,訪問許可權修飾符物件訪問許可權
- js如何判斷一個變數是否是一個數字JS變數
- python中的引用傳遞,可變物件,不可變物件,list注意點Python物件
- 這裡是值引用還是指標引用?指標
- PHP 引用變數名與 foreach 中 $val 同名時發生的變化PHP變數
- java零基礎自學第七天①,什麼是成員變數和區域性變數,private關鍵字使用,this關鍵字使用Java變數
- block 對外部引用變數的處理BloC變數
- php傳引用和全域性變數PHP變數
- 使用 foreach 使用引用變數需要注意的問題變數
- Linux下變數的定義及引用Linux變數
- php的變數引用與銷燬機制PHP變數
- 引用型別變數的強制轉換型別變數
- 使用類繼承還是類的成員變數繼承變數
- python變數命名為什麼數字不能開頭?Python變數
- 關於C/C++ const變數 const指標 以及C++ 引用變數的解析C++變數指標