使用final關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變?
物件可變,引用不可變
使用final關鍵字修飾一個變數時,是指引用變數不能變,引用變數所指向的物件中的內容還是可以改變的。例如,對於如下語句:
final StringBuffera=new StringBuffer("immutable");
執行如下語句將報告編譯期錯誤:
a=new StringBuffer("");
但是,執行如下語句則可以通過編譯:
a.append(" broken!");
有人在定義方法的引數時,可能想採用如下形式來阻止方法內部修改傳進來的引數物件:
public void method(final StringBuffer param){
}
實際上,這是辦不到的,在該方法內部仍然可以增加如下程式碼來修改引數物件:
param.append("a");
相關文章
- const修飾符的使用(修飾結構體指標,引用外部的const 變數)結構體指標變數
- 引用變數變數
- Java之private關鍵字修飾成員變數Java變數
- Java 中將lambda 表示式體中的變數賦值給lambda體之外的一個區域性變數時,要求那個區域性變數是final 修飾的Java變數賦值
- less 全域性變數使用 引用變數
- 面試官:告訴我為什麼static和transient關鍵字修飾的變數不能被序列化?面試變數
- Python學習之變數、物件和引用Python變數物件
- PHP匿名函式使用use關鍵詞引用外部空間變數PHP函式變數
- javascript中怎麼判斷某變數是null,undefined,還是不存這個變數 ? 以及變數是array 還是 object 還是 null ?JavaScript變數NullUndefinedObject
- JavaScript中的安全變數引用JavaScript變數
- const關鍵字在C與C++中修飾變數的區別C++變數
- python中的引用傳遞,可變物件,不可變物件,list注意點Python物件
- 一鍵變老,一鍵還童,一鍵變性!這個全球霸屏的 FaceApp 到底是個啥?APP
- 【教程】(Angular)模版引用變數的魔法Angular變數
- PHP 引用變數名與 foreach 中 $val 同名時發生的變化PHP變數
- 物件與引用,static關鍵字,程式碼塊,包,訪問許可權修飾符物件訪問許可權
- Makefile引用與環境變數變數
- 使用 foreach 使用引用變數需要注意的問題變數
- sed中變數引用的幾種方式變數
- Facade對應物件 全域性唯一還是時刻變化物件
- Python中的物件引用、可變性和垃圾回收Python物件
- python變數命名為什麼數字不能開頭?Python變數
- 許可權修飾符和final關鍵字
- java零基礎自學第七天①,什麼是成員變數和區域性變數,private關鍵字使用,this關鍵字使用Java變數
- C#7.0--引用返回值和引用區域性變數C#變數
- Linux下使用Vi時方向鍵變亂碼、刪除鍵不能使用的解決方法Linux
- php之普通變數賦值、物件賦值、引用賦值的區別PHP變數賦值物件
- Shell--引用變數帶不帶""的區別變數
- python 判斷變數是數字型還是字元型Python變數字元
- Java 的包, 許可權修飾符與final關鍵字Java
- 智慧指標引用計數變化學習指標
- 面試官:transient關鍵字修飾的變數當真不可序列化?我:煩請先生教我!面試變數
- 不使用臨時變數交換兩個變數的值變數
- java:識別符號 關鍵字 變數Java符號變數
- 介面測試如何在 json 中引用 mock 變數JSONMock變數
- 介面測試如何在json中引用mock變數JSONMock變數
- Python 中變數賦值傳遞時的引用和複製介紹Python變數賦值
- C++ vector 元素數量變化不能使用範圍 forC++
- private,public,protected,static不可以修飾區域性變數,方法裡的變數變數