java中final與finally的使用介紹
final可以修飾類 ,成員變量,局部變量和方法。
1.final修飾成員變量
1.final成員變量的初始化
對于final修飾的變量,系統(tǒng)不會默認初始化為0
fina變量初始化方式:
- 在定義的時候初始化
- final變量可以在初始化塊中初始化,不可以在靜態(tài)初始化塊中初始化。
- 靜態(tài)final變量可以在靜態(tài)初始化塊中初始化,不可以在初始化塊中初始化。
- fina變量還可以在構(gòu)造函數(shù)中初始化,但是靜態(tài)final變量不可以。
2.final修飾方法
當final用來修飾方法時,表示這個方法不可以被子類覆蓋。
3.final修飾類
final修飾的列不允許被繼承,編譯器在處理時把它的所有方法都當作final的,因此final類比普通類擁有更高的效率。而由關(guān)鍵字abstract定義的抽象列含有必須由繼承自它的子類重載實現(xiàn)的抽象方法,因此無法同時用final和abstract來修飾同一個類。同樣的道理,final也不能用來修飾接口。final的類的方法都不能被重寫。但這并不表示final的類的屬性值也是不可改變的。要想做到final類的屬性值不可改變,必須給他增加final修飾符。
finally語句只能用于try/catch語句中,并且附帶著一個語句塊,表示這段語句最終總是被執(zhí)行。
public class Test {
public static void main(String[] args){
System.out.println(returnTest());//false
}
public static boolean returnTest(){
try{
return true;
}finally{
return false;
}
}
}
先計算return后面的表達式的值,將值臨時存儲起來,然后計算finally里的return后的表達式值,算出后也會臨時存儲,
此時就會把之前存儲的值給覆蓋掉。最后,回到前一個return處,從臨時存儲變量的地方把值拿出來,返回。即得到了這樣的結(jié)果。
相關(guān)文章
詳解JUC并發(fā)編程中的進程與線程學(xué)習(xí)
這篇文章主要為大家詳細介紹了JUC并發(fā)編程中的進程與線程學(xué)習(xí),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03java使用POI批量導(dǎo)入excel數(shù)據(jù)的方法
這篇文章主要為大家詳細介紹了java使用POI批量導(dǎo)入excel數(shù)據(jù)的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07解決SpringMvc后臺接收json數(shù)據(jù)中文亂碼問題的幾種方法
本篇文章主要介紹了解決SpringMvc后臺接收json數(shù)據(jù)中文亂碼問題的幾種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01SpringMVC九大組件之HandlerMapping詳解
這篇文章主要介紹了SpringMVC九大組件之HandlerMapping詳解,HandlerMapping 叫做處理器映射器,它的作用就是根據(jù)當前 request 找到對應(yīng)的 Handler 和 Interceptor,然后封裝成一個 HandlerExecutionChain 對象返回,需要的朋友可以參考下2023-09-09