Javaでは、キーワードfinal
、finally
、およびfinalize
を実行する目的は何ですか?
final
は、変数を「変更不可」としてマークするために使用できます
private final String name = "foo"; //the reference name can never change
final
は、メソッドを「オーバーライド不可」にすることもできます
public final String toString() { return "NULL"; }
final
は、クラスを「継承不可」にすることもできます。つまり、クラスをサブクラス化することはできません。
public final class finalClass {...}
public class classNotAllowed extends finalClass {...} // Not allowed
finally
は、try/catchステートメントで コード「always」を実行 に使用されます
lock.lock();
try {
//do stuff
} catch (SomeException se) {
//handle se
} finally {
lock.unlock(); //always executed, even if Exception or Error or se
}
Java 7には new try with resourcesステートメント があり、明示的または暗黙的に実装するリソースを自動的に閉じるために使用できます Java.io.Closeable または Java.lang。 AutoCloseable
finalize
は、オブジェクトがガベージコレクションされるときに呼び出されます。オーバーライドする必要はほとんどありません。例:
protected void finalize() {
//free resources (e.g. unallocate memory)
super.finalize();
}
http://allu.wordpress.com/2006/11/08/difference-between-final-finally-and-finalize/
final –定数宣言。
finally – finallyブロックは、System.exit(0)呼び出しを除き、tryブロックの終了時に常に実行されます。これにより、予期しない例外が発生した場合でも、finallyブロックが実行されます。しかし最終的には、例外処理だけでなく、プログラマーがリターン、続行、またはブレークによって誤ってクリーンアップコードをバイパスすることを回避できます。例外が予想されない場合でも、finallyブロックにクリーンアップコードを配置することは常に良い習慣です。
finalize()–メソッドはガベージコレクションに役立ちます。オブジェクトがガベージコレクターによって破棄される前に呼び出され、その状態をクリーンアップできるメソッド。 Javaにはこれらのリソースが有限数しかなく、ガベージコレクションがいつ開始されるかわからないため、ファイルハンドル、ソケット、データベース接続などの非メモリリソースを解放するために使用しないでください。 finalize()メソッドを介してこれらの非メモリリソースを解放します。
Googleで検索してみましたが、説明のために説明が必要ですか?
Finalキーワードは、定数を宣言するために使用されます。
final int FILE_TYPE = 3;
Finallyキーワードはtry catchステートメントで使用され、スローされた例外に関係なく実行するコードブロックを指定します。
try
{
//stuff
}
catch(Exception e)
{
//do stuff
}
finally
{
//this is always run
}
最後に(笑)、finalize imがキーワードであることは完全にはわかりませんが、Objectクラスには finalize() 関数があります。
final:finalはキーワードです。 finalとしてクリアされた変数は、1回だけ初期化する必要があり、変更できません。 finalとして宣言されたJavaクラスは拡張できません。 finalとして宣言されたメソッドはオーバーライドできません。
finally:finally is block。 finallyブロックは、tryブロックが終了すると常に実行されます。これにより、予期しない例外が発生した場合でも、finallyブロックが実行されます。しかし、最終的には単なる例外処理以上のことに役立ちます。これにより、プログラマは、クリーンアップコードが誤ってリターン、続行、またはブレークによってバイパスされることを回避できます。例外が予想されない場合でも、finallyブロックにクリーンアップコードを配置することは常に良い習慣です。
finalize:finalizeはメソッドです。オブジェクトがガベージコレクションされる前に、ランタイムシステムはfinalize()メソッドを呼び出します。ガベージコレクションを取得する前に、finalize()メソッドでシステムリソースリリースコードを記述できます。
1。Final•Finalは、クラス、メソッド、および変数に制限を適用するために使用されます。 •最終クラスは継承できず、最終メソッドはオーバーライドできず、最終変数値は変更できません。 •Constructorで初期化される空のfinal変数の場合を除き、最終変数は作成時に初期化されます。 •最終はキーワードです。
2。finally•最後は、try and catchとともに例外処理に使用されます。 •例外が処理されるかどうかに関係なく実行されます。 •このブロックは、データベース接続、I/Oリソースなどのリソースを閉じるために使用されます。 •最後はブロックです。
。Finalize•Finalizeは、適格なオブジェクトを収集してクリーンアップ処理を実行する直前に、ガーベッジコレクションスレッドによって呼び出されます。 •これはオブジェクトがクリーンアップを実行する最後のチャンスですが、finalize()が呼び出されるかどうかは保証されないため、呼び出しをファイナライズするまでリソースを保持するのは悪い習慣です。 •ファイナライズは方法です。