の経験がある場合 、次に、インタビュアーが基本的な概念から通常取り上げられるトリッキーな質問をする傾向があることに気付いたかもしれません。主に尋ねられるそのような質問の1つは、ファイナル、ファイナル、ファイナライズを区別することです。 。この記事の媒体を通して、Javaでのファイナル、ファイナル、ファイナライズの間に明確な線を引き、より良い洞察を得るのに役立ちます。
この記事では、次のトピックについて説明します。
それでは、finalの最初のキーワードから始めて、最後にJavaでファイナライズしましょう。
最終キーワード
Javaでは、finalはアクセス修飾子としても使用できるキーワードです。つまり、finalキーワードは、ユーザーのアクセスを制限するために使用されます。次のようなさまざまなコンテキストで使用できます。
これらのそれぞれで、finalキーワードの効果は異なります。それがそれぞれにどのように影響するかを1つずつ見てみましょう。
1.可変エンディング
の最後のキーワードはいつでも 変数、フィールド、またはパラメータとともに使用されます。これは、参照が渡されるか、インスタンス化が行われると、プログラムの実行中にその値を変更できないことを意味します。の場合 値がない場合はfinalとして宣言されているため、空白/初期化されていないfinal変数と呼ばれ、コンストラクターを介してのみ初期化できます。
例を見てみましょう。
public class A {int var1 = 123 //最終変数の宣言finalint var2 = 345 final int var3 //空白の最終変数を初期化しようとしているvar = 555 //エラーA(){var1 = 111 //エラーなしvar2 = 333 //コンパイルエラー//空白の最終変数の初期化var3 = 444 //エラーなし} //最終パラメータの受け渡しvoidavg(int param1、final int param2){param1 = 2345 //エラーなしparam2 = 1223 //コンパイルエラー} //最終フィールドの宣言voidshow(){final int fieldVal = 300000 fieldVal = 400000 //エラー}}
つまり、これはすべて、finalキーワードが変数にどのように影響するかについてでした。次に、メソッドが変数にどのように影響するかを見てみましょう。
2.最終的な方法
Javaでは、メソッドがfinalとして宣言されている場合は常に、それを行うことはできません。 プログラムの実行中、任意の子クラスによって。
例を見てみましょう。
// FINALMETHODクラスA {final void method_abc(){System.out.println( 'これはFinalメソッドであり、オーバーライドできません')} void method_xyz(){System.out.println( 'これは通常のメソッドであり、オーバーライド可能 ')}}クラスBはAを拡張します{void method_abc {//コンパイル時エラー} void method_xyz(){System.out.println('これはクラスBのオーバーライドされたメソッドです ')}}
これまで、変数とメソッドfinalを宣言した結果を確認しました。次に、Javaでクラスがfinalとして宣言されたときに何が起こるかを見てみましょう。
3.最終クラス
Javaでは、クラスがfinalとして宣言されている場合は常に、 。これは、クラスがfinalとして宣言されると、クラスに含まれるすべてのデータメンバーとメソッドが暗黙的にfinalとして宣言されるためです。また、クラスがfinalとして宣言されると、抽象として宣言できなくなります。言い換えると、クラスは、finalまたはabstractの2つのいずれかになります。
例を見てみましょう。
// FINALCLASS最終クラスA {//クラス本体}クラスBはAを拡張します{//コンパイルエラー//クラス本体}
これで、最後のキーワードの動作を明確に理解できたと思います。それでは、final、finally、finallyについてこの記事を進めて、finallyキーワードの役割を見つけましょう。
最後にブロック
Javaでは、最後に、に使用されるオプションのブロックです。 。通常、その前にtry-catchブロックがあります。 finalブロックは、リソースのクリーンアップやメモリ使用量の解放などの重要なコードを実行するために使用されます。finallyブロックは、例外が処理されるかどうかに関係なく実行されます。したがって、クリーンアップコードをfinallyブロックでラップすることは、優れた方法と見なされます。また、catchブロックを必要とせずに、tryブロックと一緒に使用することもできます。
同じ例を見てみましょう。
クラスA {public static void main(String args []){try {System.out.println( 'Try Block')throw new Exception()} catch(Exception e){System.out.println( 'Catch Block') }最後に{System.out.println( 'Finally Block')}}}
これまで、Javaの最後のキーワードと最後のキーワードについてはすでに説明しました。ここで、3つのキーワードのうち最後のキーワードであるJavaのfinalizeキーワードに光を当てましょう。
ファイナライズメソッド
Finalizeは、Objectクラスで定義されている保護された非静的メソッドであるため、Javaのすべてのオブジェクトで使用できます。この方法はオブジェクトが完全に破壊される前にガベージコレクタによって呼び出されます。時々のようにAN 開いている接続を閉じる、リソースを解放するなど、リソースが破棄される前に、いくつかの重要なタスクを完了する必要がある場合があります。これらのタスクが実行されない場合、プログラムの効率が低下する可能性があります。したがって、ガベージコレクターは、参照されなくなり、ガベージコレクションのマークが付けられたオブジェクトに対してそれを呼び出します。
このメソッドは、クラス外からの使用を制限するために保護されていると宣言されています。ただし、クラス内からオーバーライドして、ガベージコレクション時にプロパティを定義できます。
回文をチェックするJavaプログラム
同じ例を見てみましょう。
public class A {public void finalize()throws Throwable {System.out.println( 'Object destroys by the Garbage Collector')} public static void main(String [] args){Edureka test = new Edureka()test = null System.gc()}}
これで、この記事の最終版、最終版、そしてJavaでの最終版について説明します。結論として、3つのキーワードすべての比較を追加しました。これは、主な違いを一目で把握するのに役立ちます。
比較表–Javaでのキーワードの最終vs最終vsファイナライズ
因子 | 最後の | 最終的に | ファイナライズ |
定義 | Finalはキーワードであり、Javaでアクセス修飾子として使用されます | 最後に、例外処理に使用されるJavaのブロックです。 | Finalizeは、ガベージコレクションに使用されるJavaのメソッドです。 |
応用 | Final in Javaは、変数、メソッド、およびクラスとともに使用され、アクセス許可を設定します。 | 最後に、ブロックはtry andcatchブロックとともに使用されます | JavaのFinalizeメソッドは、使用されなくなったオブジェクトで使用されます |
関数 | Javaの最終変数は定数であり、一度割り当てられると値を変更できません。 Javaのfinalメソッドは、その子クラスによってオーバーライドできません。 Javaの最終クラスは、どの子クラスにも継承できません。 | 最後に、Javaのブロックは、tryブロックで使用されたリソースのクリーンアップに役立ちます | Finalizeメソッドは、オブジェクトがガベージコレクターによって破棄される前にオブジェクトのアクティビティをクリーンアップするのに役立ちます |
実行 | コンパイラによって呼び出されたときに実行されます | try-catchブロックの実行直後に実行されます | オブジェクトが破壊される直前に実行されます |
このファイナル、ファイナル、そしてJavaでのファイナライズを通じて、概念を明確にし、知識に付加価値を与える手助けができたことを願っています。
この記事を「Javaでの最終、最終、最終化」で見つけた場合 」関連、 チェックアウト 25万人以上の満足した学習者のネットワークを持つ信頼できるオンライン学習会社であるEdurekaが世界中に広がっています。 質問がありますか?このコメントセクションでそれを言及してください ファイナル、ファイナル、Javaでファイナライズ 折り返しご連絡いたします。