Java では、キーワード「final」、「finally」、および「finalize」はどのような目的を果たしますか?

StackOverflow https://stackoverflow.com/questions/7814688

  •  26-10-2019
  •  | 
  •  

質問

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 トライ/キャッチステートメントで使用されます コードを実行する「常に」

lock.lock();
try {
  //do stuff
} catch (SomeException se) {
  //handle se
} finally {
  lock.unlock(); //always executed, even if Exception or Error or se
}

Java 7には リソースステートメントで新しい試み 明示的または暗黙的に実装するリソースを自動的に閉じるために使用できること java.io.closable また java.lang.autoclosable

確定します

finalize オブジェクトがガベージが収集されたときに呼び出されます。あなたはそれを無効にする必要はほとんどありません。例:

protected void finalize() {
  //free resources (e.g. unallocate memory)
  super.finalize();
}

他のヒント

  • 「最終的」とは、変更できないことを意味します。通常、これは、プログラムの存続期間を通じて同じ値を保持する静的変数に対して使用する必要があります。
  • 「Finally」は、try/catch ブロックと組み合わせて使用​​されます。「finally」句内のすべての内容は、「try」ブロック内のコードが例外をスローするかどうかに関係なく実行されます。
  • 「Finalize」は、オブジェクトがガベージ コレクションされる前に JVM によって呼び出されます。

最後のキーワードは、定数を宣言するために使用されます。

final int FILE_TYPE = 3;

最終的にキーワードは、Try Catchステートメントで使用され、スローされた例外に関係なく実行するコードのブロックを指定します。

try
{
  //stuff
}
catch(Exception e)
{
  //do stuff
}
finally
{
  //this is always run
}

そして最後に(ははは)、キーワードが完全に確信しているわけではありませんが、 finalize() オブジェクトクラスの関数。

http://allu.wordpress.com/2006/11/08/difference-betwene-final-finally-finalize/

最終 - 一定の宣言。

最後に、system.exit(0)呼び出しを除き、tryブロックが終了するときに最終的にブロックが常に実行されます。これにより、予期しない例外が発生した場合でも、最終的なブロックが実行されます。しかし、最終的には例外処理以上のものに役立ちます。これにより、プログラマーは、リターン、続行、または壊れて誤ってクリーンアップコードをバイパスしないようにすることができます。クリーンアップコードを最終的にブロックに入れることは、例外が予想されていない場合でも、常に良い習慣です。

finalize() - メソッドはガベージコレクションに役立ちます。オブジェクトがガベージコレクターによって破棄される前に呼び出される方法で、状態をクリーンアップできるようにします。 Javaにはこれらのリソースの数が限られているため、ファイルハンドル、ソケット、データベース接続などのメモリ以外のリソースをリリースするために使用しないでください。 finalize()メソッドを介して。

Googleで検索してみましたが、説明の説明が必要ですか?

最後の: ファイナルはキーワードです。 ファイナルは1回だけ初期化され、変更することはできないため、変数を測定します。ファイナルとして宣言されたJavaクラスは拡張できません。最終として宣言された方法は無効にすることはできません。

最後に: 最後にブロックです。 Tryブロックが終了すると、最終的にブロックが常に実行されます。これにより、予期しない例外が発生した場合でも、最終的なブロックが実行されます。しかし、最終的には例外処理以上のものに役立ちます。これにより、プログラマーは、リターン、継続、または破損によって誤ってクリーンアップコードをバイパスしないようにします。クリーンアップコードを最終的にブロックに入れることは、例外が予想されていない場合でも、常に良い習慣です。

ファイナライズ: ファイナライズはメソッドです。 オブジェクトがガベージを収集する前に、ランタイムシステムはそのfinalize()メソッドを呼び出します。ガベージを収集する前に、システムリソースリリースコードをfiranize()メソッドに記述できます。

1.ファイナル•ファイナルは、クラス、方法、変数に制限を適用するために使用されます。 •最終クラスを継承することはできません。最終的な方法はオーバーライドできず、最終的な変数値を変更できません。 •最終変数は、コンストラクターで初期化された空白の最終変数の場合を除き、作成時に初期化されます。 •ファイナルはキーワードです。

2.最後に•最終的には、試してみるとともに例外処理に使用されます。 •例外が処理されるかどうかにかかわらず、実行されます。 •このブロックは、データベース接続、I/Oリソースなどのリソースを閉じるために使用されます。 •最後にブロックです。

3.最終化します•ファイナライズは、クリーンアップ処理を実行するために適格なオブジェクトを収集する直前にガーベージコレクションスレッドによって呼び出されます。 •これは、オブジェクトがクリーンアップを実行する最後のチャンスですが、finalize()が呼び出されるかどうかは保証されていないため、コールを完成するまでリソースを維持するための悪い実践です。 •ファイナライズはメソッドです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top