Javaコア36話(第3話)final、finally、finalizeの違いについて話しますか?
866 ワード
この3つは連絡はありませんが、面接官や質問を排除せず、集合して整理しましょう.
final
修飾クラス:継承できません.修飾方法:書き換えられない.修飾変数:変更できません.
finalが参照を修飾する場合、この参照が指すオブジェクトの位置を制限するだけで、この位置の内容の変更を制限することはできません.例:
JDK 9に新しく追加されたリストof()メソッドによって作成される集合は可変リストである.
finally
重点コードが必ず実行されることを保証します.しかし、fianllyのコードが実行できない場合もあります.以下のようにします.(1)
(2)無限ループ
(3)スレッドが殺されるtryが実行され,finallyのスレッドが殺されるとfinallyも実行できない.
finalize
finalizeはベースクラスjavaです.lang.Objectの1つの方法で、彼の設計の目的は対象がごみに収集される前に特定の資源の回収を完成することを保証することです.ただし、使用は推奨されません.
final
修飾クラス:継承できません.修飾方法:書き換えられない.修飾変数:変更できません.
finalが参照を修飾する場合、この参照が指すオブジェクトの位置を制限するだけで、この位置の内容の変更を制限することはできません.例:
final List a = new ArrayList();
// a
a.add(1);
JDK 9に新しく追加されたリストof()メソッドによって作成される集合は可変リストである.
finally
重点コードが必ず実行されることを保証します.しかし、fianllyのコードが実行できない場合もあります.以下のようにします.(1)
try{
System.exit(1);
}finally{
System.out.printly("Print from fianlly");
}
(2)無限ループ
try{
while(true){
System.out.print("abc");
}
}finally{
System.out.println("abc");
}
(3)スレッドが殺されるtryが実行され,finallyのスレッドが殺されるとfinallyも実行できない.
finalize
finalizeはベースクラスjavaです.lang.Objectの1つの方法で、彼の設計の目的は対象がごみに収集される前に特定の資源の回収を完成することを保証することです.ただし、使用は推奨されません.