java 基礎之final、finally和finalize的區別
1.final可以修飾類,不能被繼承;可以修飾方法,不能被重寫;可以修飾變量,只能賦值一次。
2.finally是try語句中的語句體,不能單獨使用,用來釋放資源;
3.finalize是一個方法,當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。
如下代碼程序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
package cn.jit.test; /** * 面試題1:final,finally和finalize的區別: * * final可以修飾類,不能被繼承; * 可以修飾方法,不能被重寫 * 可以修飾變量,只能賦值一次。 * finally是try語句中的語句體,不能單獨使用,用來釋放資源; * finalize是一個方法,當垃圾回收器確定不存在對該對象的更多引用時,由對象 * 的垃圾回收器調用此方法。 * * * 面試題2:如果catch里面有return語句,請問finally的代碼還會被執行嗎? * 如果會,請問是在return前還是在return后? * 會。在return前。 * * @author Rocky * */ public class FinallyDemo8 { public static void main(String[] args) { Demo d = new Demo(); System.out.println(d.method()); } } class Demo { public int method() { int x = 10 ; try { x = 20 ; System.out.println( 1 / 0 ); return x; } catch (Exception e) { x = 30 ; return x; } finally { /* * finally中不應當有return語句 * 否則該方法一定會返回這里的內容 */ x = 40 ; return 40 ; //千萬不要在finally里面寫返回語句,因為finally的作用是 //釋放資源,是肯定會執行的,如果在這里面寫返回語句,那么try和cache //的結果都會被改變,所以這么寫就是犯罪!??! } } } |
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://blog.csdn.net/qian_ch/article/details/54972063