1、finally語句塊java
1.注意點:node
(1)finally語句塊能夠直接和try語句塊聯合使用。try...finally....git
(2)try.....catch.....finally也能夠執行;github
(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(); } } } } }
2、final、finalize和finally之間的區別大數據
final是一個Java關鍵字,用它來修飾的變量,不能夠重複在被賦值;用它來修飾的成員函數,不能夠從新被覆蓋。ui
finalize()是Object中的方法,在垃圾回收以前會自動調用這個方法。spa
finally是異常處理機制的一個語法結構。
三者其實沒有什麼聯繫,是不相同的語法。
3、源碼:
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.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料