一、finally語句塊 1.註意點: (1)finally語句塊可以直接和try語句塊聯合使用。try...finally.... (2)try.....catch.....finally也可以執行; (3)在finally語句塊中的代碼是一定會執行的。 package com.bjpowerno ...
一、finally語句塊
1.註意點:
(1)finally語句塊可以直接和try語句塊聯合使用。try...finally....
(2)try.....catch.....finally也可以執行;
(3)在finally語句塊中的代碼是一定會執行的。
package com.bjpowernode.java_learning; import java.io.*; public class D64_1_ { public static void main(String[] args) throws FileNotFoundException{ try { System.out.println("ABC"); }finally { System.out.println("jdfoaij"); } try { // System.exit(0);//這句話代表退出Java虛擬機 FileInputStream f1 = new FileInputStream("jfdioa"); //下麵這個語句不會執行 System.out.println("ABC"); }finally { //無論try裡面的語句是否報錯,下麵的語句都會執行 System.out.println("jfaio"); } } }
2.深入finally語句塊
public class D64_1_ { public static void main(String[] args) throws FileNotFoundException{ int i = m1(); System.out.println(i); } public static int m1() { int i = 10; try { return i; }finally { i++; System.out.println("m1的i=" + i);//11 } /* * 以上代碼的執行原理, * int i = 10; * trt{ * int temp = i; * return temp; * }finally{ * i++; * System.out.println("m1的i=" + i);//11 * } */ } }
3.fianlly語句塊是一定會執行的,所以通常在程式中,為了保證某個資源一定會被釋放,所以一般會在finally語句塊中中釋放資源。
package com.bjpowernode.java_learning; import java.io.*; public class D64_1_ { public static void main(String[] args) throws FileNotFoundException{ FileInputStream f2 = null; try { f2 = new FileInputStream("jfoda"); }catch(FileNotFoundException e){ e.printStackTrace(); }finally { if(f2 != null) { try { f2.close(); }catch(IOException e) { e.printStackTrace(); } } } } }
二、final、finalize和finally之間的區別
final是一個Java關鍵字,用它來修飾的變數,不可以重覆在被賦值;用它來修飾的成員函數,不可以重新被覆蓋。
finalize()是Object中的方法,在垃圾回收之前會自動調用這個方法。
finally是異常處理機制的一個語法結構。
三者其實沒有什麼聯繫,是不相同的語法。
三、源碼:
D64_1_FinallySentenceBlock.java
https://github.com/ruigege66/Java/blob/master/D64_1_FinallySentenceBlock.java
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料