finally的特點
finally:被finally控制的陳述句體一定會執行
* 注意:如果在執行到finally之前jvm退出了,就不能執行了,
*
* A:格式
* try...catch...finally...
* B:用于釋放資源,在IO流操作和資料庫操作中會見到
package cn.itcast_07; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /* * finally:被finally控制的陳述句體一定會執行 * 注意:如果在執行到finally之前jvm退出了,就不能執行了, * * A:格式 * try...catch...finally... * B:用于釋放資源,在IO流操作和資料庫操作中會見到 */ public class FinallyDemo { public static void main(String[] args) { String s = "2014-11-20"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = null; try { // System.out.println(10 / 0); d = sdf.parse(s); } catch (ParseException e) { e.printStackTrace(); System.exit(0); } finally { System.out.println("這里的代碼是可以執行的"); } System.out.println(d); } }
面試題:
一:
* 1:final,finally和finalize的區別
* final:最終的意思,可以修飾類,成員變數,成員方法
* 修飾類,類不能被繼承
* 修飾變數,變數是常量
* 修飾方法,方法不能被重寫
* finally:是例外處理的一部分,用于釋放資源,
* 一般來說,代碼肯定會執行,特殊情況:在執行到finally之前jvm退出了
* finalize:是Object類的一個方法,用于垃圾回收
二:
2:如果catch里面有return陳述句,請問finally里面的代碼還會執行嗎?
* 如果會,請問是在return前,還是return后,
* 會,前,
*
* 準確的說,應該是在中間,
*
public class FinallyDemo2 { public static void main(String[] args) { System.out.println(getInt()); } public static int getInt() { int a = 10; try { System.out.println(a / 0); a = 20; } catch (ArithmeticException e) { a = 30; return a; /* * return a在程式執行到這一步的時候,這里不是return a而是return 30;這個回傳路徑就形成了, * 但是呢,它發現后面還有finally,所以繼續執行finally的內容,a=40 * 再次回到以前的回傳路徑,繼續走return 30; */ } finally { a = 40; return a;//如果這樣結果就是40了, } // return a; } }
三:
:try...catch...finally的格式變形
* A:try...catch...finally
* B:try...catch
* C:try...catch...catch...
* D:try...catch...catch...finally
* E:try...finally
* 這種做法的目前是為了釋放資源,
*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451990.html
標籤:其他
上一篇:Java思考——如何使用Comparable按照我們指定的規則排序?
下一篇:背包問題(1):基本模型和解法
