① java中final,finally和finalize的區別是什麼
一辦企業都會問道這個問題 這個是要注意的
final --修飾符(關鍵字)。如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承 被final聲明過的類也可以稱為太監類(因為不能在繼承)被final聲明過的變數就變成常量了 如果加上static 就是全局常量了
finally—在異常處理時提供 finally 塊來執行任何清除操作。如果拋出一個異常,那麼相匹配的catch 子句就會執行,然後控制就會進入 finally 塊(如果有的話)。
finalize —方法名。Java 技術允許使用finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。一旦垃圾回收器准備好釋放對象佔用的空間,將首先調用其finalize()方法,並且在下一次垃圾回收動作發生時,才會真正回收對象佔用的內存。
簡單的說finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的
希望對你有幫助
② java中為什麼用finally語句
類似與發生錯誤之後,一定要進行的操作!
比較猥瑣的例子就是:
try{
grilFriend().hasChild();
//女友版意外懷孕
}catch{
grilFriend().streamOfPeople();
//人流處理
}finally{
careof();
//照顧權她
}
是人,總是要照顧的
③ JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表什麼意
throws關鍵字通常復被應用在聲明方法時制,用來指定可能拋出的異常。多個異常可以使用逗號隔開。當在主函數中調用該方法時,如果發生異常,就會將異常拋給指定異常對象。
throw關鍵字通常用在方法體中,並且拋出一個異常對象。程序在執行到throw語句時立即停止,它後面的語句都不執行。通過throw拋出異常後,如果想在上一級代碼中來捕獲並處理異常,則需要在拋出異常的方法中使用throws關鍵字在方法聲明中指明要跑出的異常;如果要捕捉throw拋出的異常,則必須使用try—catch語句。
finally則是表示最後執行的,與try—catch連用,不管是否拋出異常,都會執行finally塊的內容。
④ 試解釋Java與Finally的意義及用法
一、 finally:java的一種異常處理機制。
finally是對Java 異常處理模型的最佳補充。finally 結構使代碼總會執行,而不管有無異常發生。使用 finally 可以維護對象的內部狀態,並可以清理非內存資源。特別是在關閉資料庫連接這方面,如果程序員把資料庫連接的close()方法放到finally中,就會大大降低程序出錯的幾率。
二、在java中的finally關鍵一般與try一起使用,在程序進入try塊之後,無論程序是因為異常而中止或其它方式返回終止的,finally塊的內容一定會被執行
寫個例子來說明下:
[java] view plainprint?
<pre class="java" name="code">package com.teedry.base;
public class TryAndFinallyTest {
public static void main(String[] args) throws Exception{
try{
int a = testFinally(2);
System.out.println("異常返回的結果a:"+a);
}catch(Exception e){
int b = testFinally(1);
System.out.println("正常返回的結果b:"+b);
}
int b = testFinally(3);
System.out.println("break返回的結果:"+b);
b = testFinally(4);
System.out.println("return返回的結果:"+b);
}
static int testFinally(int i) throws Exception{
int flag = i;
try{//一旦進去try范圍無論程序是拋出異常或其它中斷情況,finally的內容都會被執行
switch(i){
case 1:++i;break;//程序 正常結束
case 2:throw new Exception("測試下異常情況");
case 3:break;
default :return -1;
}
}finally{
System.out.println("finally coming when i="+flag);
}
return i;
}
}
</pre><br>
<pre></pre>
<p>執行結果如下:</p>
<p>finally coming when i=2<br>
finally coming when i=1<br>
正常返回的結果b:2<br>
finally coming when i=3<br>
break返回的結果:3<br>
finally coming when i=4<br>
return返回的結果:-1</p>
<p> </p>
<p>結果說明無論上述什麼情況,finally塊總會被執行。 </p>
二 try的范圍內存在exception的話,就會在exception的位置跳到exception哪裡,然後執行完exception之後就馬上進入finally。
假如exception范圍內存在return這些的也會執行finally
假如try范圍內不存在exception的話,就執行完try范圍內代碼之後進入finally執行,finally代碼
其實,一般finally寫的代碼就是流的關閉語句,
假如還是不明白,試一下運行我下面寫的幾個代碼就知道的了。假如try不存在exception的話:
try{
System.out.println("try");
}catch(Exception e)
{
System.out.println("Exception");
}
finally{
System.out.println("Finally");
}
假如try中存在exception的:
try{
String demo = null;
demo.split(";");
System.out.println("try");
}catch(Exception e)
{
System.out.println("Exception");
}
finally{
System.out.println("Finally");
}
假如try中存在exception,然後exception中存在跳出語句的:
try{
String demo = null;
demo.split(";");
System.out.println("try");
}catch(Exception e)
{
System.out.println("Exception");
return;
}
finally{
System.out.println("Finally");
}
假如try中不存在exception,但是try中存在跳出語句的:
try{
System.out.println("try");
return;
}catch(Exception e)
{
System.out.println("Exception");
}
finally{
System.out.println("Finally");
}