更新時間:2021-08-03 來源:黑馬程序員 瀏覽量:
Java中被final修飾的變量被稱之為常量,它只能被賦值一次,也就是說final修飾的變量一旦被賦值,其值不能改變。如果再次對該變量進行賦值,則程序會在編譯時報錯。接下來通過一個案例來進行驗證,如文件1所示。
文件1 Example10.java
public class Example10 { public static void main(String[] args) { final int num = 2; // 第一次可以賦值 num = 4; // 再次賦值會報錯 } }
程序編譯報錯,如圖1所示。
圖1 運行結(jié)果
文件1中,當在第4行再次對num賦值時,程序出現(xiàn)了“The final local variable num cannot be assigned. It must be blank and not using a compound assignment(final變量num無法被重新賦值)”的錯誤。由此可見,被final修飾的變量為常量,它只能被賦值一次,其值不可改變。
文件1中,演示的是局部變量被final修飾的情況,當局部變量使用final關鍵字進行修飾時,可以在聲明變量的同時對變量進行賦值,也可以先聲明變量然后再進行有且只有一次的賦值。而當成員變量被final修飾時,在聲明變量的同時必須進行初始化賦值,否則程序編譯報錯,接下來通過一個案例來演示final修飾成員變量和局部變量的情況,如文件2所示。
文件2 Example11.java
public class Example11 { // final修飾的成員變量,必須在聲明的同時進行賦值,否則編譯錯誤 final int m; public static void main(String[] args) { // final修飾的局部變量,可以先聲明,再進行一次賦值 final int n; n = 4; } }
程序編譯報錯,如圖2所示。
圖2 運行結(jié)果
從圖2可以看出,程序出現(xiàn)了編譯錯誤,并提示“The blank final field m may not have been initialized(final修飾的變量m沒有初始化)”。這是因為使用final關鍵字修飾成員變量時,Java虛擬機不會對其進行初始化。因此使用final修飾成員變量時,需要在定義變量的同時賦予一個初始值,下面將第3行代碼修改為:
final int m = 0; // 為final修飾的成員變量m初始化賦值
保存后,Eclipse的編輯器將不會提示錯誤。
【AI設計】北京143期畢業(yè)僅36天,全員拿下高薪offer!黑馬AI設計連續(xù)6期100%高薪就業(yè)
2025-09-19【跨境電商運營】深圳跨境電商運營畢業(yè)22個工作日,就業(yè)率91%+,最高薪資達13500元
2025-09-19【AI運維】鄭州運維1期就業(yè)班,畢業(yè)14個工作日,班級93%同學已拿到Offer, 一線均薪資 1W+
2025-09-19【AI鴻蒙開發(fā)】上海校區(qū)AI鴻蒙開發(fā)4期5期,距離畢業(yè)21天,就業(yè)率91%,平均薪資14046元
2025-09-19【AI大模型開發(fā)-Python】畢業(yè)33個工作日,就業(yè)率已達到94.55%,班均薪資20763元
2025-09-19【AI智能應用開發(fā)-Java】畢業(yè)當天offer率91%,薪資1W+占比54.2%,班級均薪12k+
2025-09-19