目次
実質的に Final
ホームページ Java &#&チュートリアル 最終的な総合的な詳細分析

最終的な総合的な詳細分析

Jul 19, 2017 pm 01:14 PM
final について


Javaにはキーワードfinalがあり、変数はfinal型として宣言でき、final型変数は一度しか代入できません。最終変数に繰り返し値が代入されると、コンパイル エラーが発生します。


final キーワードの意味は何ですか?

final は、メンバー変数、メソッド、クラス、ローカル変数を宣言できる Java の予約キーワードです。参照を Final として宣言すると、その参照を変更することはできなくなり、変数を再度初期化しようとすると、コンパイラによってコードがチェックされ、コンパイル エラーが報告されます。

最終変数とは何ですか?

final として宣言されたメンバー変数またはローカル変数 (メソッドまたはコード ブロック内の変数はローカル変数と呼ばれます) は、final 変数と呼ばれます。 Final 変数は、定数として static キーワードとともに使用されることがよくあります。以下は、final 変数の例です:

public static Final String LOAN = "loan";

LOAN = new String("loan") //無効なコンパイル エラー

final 変数は次のとおりです。読み取り専用。

final メソッドとは何ですか?

Final ではメソッドを宣言することもできます。メソッドの前に Final キーワードを追加することは、このメソッドがサブクラスのメソッドによってオーバーライドできないことを意味します。メソッドの機能が十分に完成しており、サブクラスで変更する必要がないと思われる場合は、メソッドを Final として宣言できます。最終メソッドは、コンパイル時に静的にバインドされ、実行時に動的にバインドする必要がないため、非最終メソッドより高速です。以下は、final メソッドの例です:

class PersonalLoan{
    public final String getName(){
        return "personal loan";
    }
}
 
class CheapPersonalLoan extends PersonalLoan{
    @Override
    public final String getName(){
        return "cheap personal loan"; //compilation error: overridden method is final
    }
}
ログイン後にコピー

final クラスとは何ですか?

finalで変更されたクラスをfinalクラスと呼びます。通常、最終クラスは機能的に完成しており、継承することはできません。 Java には、String、Interger、その他のラッパー クラスなど、final クラスが多数あります。以下は、final クラスの例です:

final class PersonalLoan{
 
    }
 
    class CheapPersonalLoan extends PersonalLoan{  //compilation error: cannot inherit from final class
 
}
ログイン後にコピー

final キーワードの利点

以下に、final キーワードを使用する利点をいくつかまとめます

Final キーワードにより、パフォーマンスが向上します。 JVM と Java アプリケーションはどちらも最終変数をキャッシュします。

Final 変数は、追加の同期オーバーヘッドなしでマルチスレッド環境で安全に共有できます。

final キーワードを使用すると、JVM はメソッド、変数、クラスを最適化します。

実質的に Final

変数は、次の状況にある場合に限り、実質的に考慮されます

1. Final として宣言されていない

2. 値を 1 回だけ割り当てます

Final を効果的に説明する最も簡単な方法このような変更後もプログラムがエラーなく実行され (コンパイルが成功した場合は ^0^)、元の実行結果と一致する場合、この変数は事実上有効であると言えます。最後の。

final の利点

ローカル変数を有効な不変変数に制限することで、開発者が並行性とスレッドセーフな開発をより適切に処理できるように設計されています。 可変フィールドは、適切に管理されていない場合、常に同時実行の問題の潜在的な原因となります。

finalキーワードの使用

変数やメソッドのパラメータなどをfinalとして宣言するのは良い習慣だと思います。これを脇に置き、final として宣言すると、クラス ファイルにコンパイルするときにコンパイラが適切に最適化します。

「クラス ファイルの最適化を達成するためにソース ファイルで Final キーワードを使用するのは間違っている」に対しては多くの議論があります。final キーワードの使用については、Robert Simons Jr の「

Hardcore Java」を読むことを強くお勧めします。最適化された詳細コンテンツ。

アプリケーションでは、final キーワードによりコードの意図が明確になり、宣言後に変更されないため、非常に安全です。

public class FinalTest {

    public static final int N_ITERATIONS = 10_00_000;

    public static String testFinal() {
        final String a = "a";
        final String b = "b";
        return a + b;
    }

    public static String testNonFinal() {
        String a = "a";
        String b = "b";
        return a + b;
    }

    public static void main(String[] args) {
        long tStart, tElapsed;

        tStart = System.currentTimeMillis();
        for (int i = 0; i < N_ITERATIONS; i++)
            testFinal();
        tElapsed = System.currentTimeMillis() - tStart;
        System.out.println("Method with finals took " + tElapsed + " ms");

        tStart = System.currentTimeMillis();
        for (int i = 0; i < N_ITERATIONS; i++)
            testNonFinal();
        tElapsed = System.currentTimeMillis() - tStart;
        System.out.println("Method without finals took " + tElapsed + " ms");

    }

}
ログイン後にコピー
実行結果:

Method with finals took 5 ms
Method without finals took 273 ms
ログイン後にコピー
概要

final は、宣言した変数をより安全にし、コードをより明確に見せることができます。 Java では、不変クラスの使用も推奨されています。


以上が最終的な総合的な詳細分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaのfinal、finally、finalizeの違い Javaのfinal、finally、finalizeの違い Feb 19, 2024 pm 12:16 PM

Java におけるfinal、finally、finalize の違いには、具体的なコード例が必要です。Java プログラミングでは、final、finally、finalize という 3 つのキーワードが頻繁に使用されます。これらは綴りは似ていますが、意味と使用法が異なります。この記事では、これら 3 つのキーワードの違いを詳しく説明し、読者の理解を助けるコード例を示します。 1. Final キーワード Final キーワードは、クラス、メソッド、変数に使用できます。その機能は、変更されたクラスを作成することです

Java では、final キーワードのみを使用して定数を定義できますか? Java では、final キーワードのみを使用して定数を定義できますか? Sep 20, 2023 pm 04:17 PM

定数変数とは、値が固定されており、プログラム内に 1 つだけ存在する変数です。定数変数を宣言して値を代入すると、プログラム全体でその値を再度変更することはできません。他の言語とは異なり、Java は定数を直接サポートしません。ただし、変数を static および Final として宣言することで、定数を作成することはできます。静的 - 静的変数を宣言すると、それらはコンパイル時にメモリにロードされます。つまり、使用できるコピーは 1 つだけになります。 Final - Final 変数を宣言すると、その値は変更できなくなります。したがって、インスタンス変数を static かつ Final として宣言することで、Java で定数を作成できます。デモの例 classData{&am

Javaのfinalキーワードの機能は何ですか Javaのfinalキーワードの機能は何ですか Nov 25, 2022 pm 04:26 PM

Java では、final を使用してクラス、メソッド、変数を変更できます。最終的に変更されたクラスは、そのクラスが他のクラスに継承できないことを意味します。つまり、このクラスは継承ツリーのリーフ クラスであり、このクラスの設計は完璧であると考えられており、変更または拡張する必要はありません。最終的に変更されたクラスのメソッドは、そのクラスが他のクラスに継承できず、オーバーライドできないことを意味します。つまり、継承されたクラスが変更できないようにメソッドがロックされています。 Final はクラス内の変数を変更します。これは、変数が初期化されると変更できないことを示します。

Java では最終オブジェクトはどのように作成されるのでしょうか? Java では最終オブジェクトはどのように作成されるのでしょうか? Apr 11, 2024 pm 02:00 PM

Java で Final オブジェクトを作成するには、final 変数を宣言する方法と、final 修飾子を使用してクラスを宣言する方法の 2 つがあります。最終変数が宣言されると、オブジェクトはイニシャライザを介して作成されます。最終クラスが宣言されると、クラス インスタンスは不変になります。重要なのは、最終オブジェクトへの参照は変更される可能性がありますが、最終オブジェクトが指すオブジェクトは不変であるということです。

Javaの最終変数 Javaの最終変数 Sep 24, 2023 pm 08:49 PM

最終変数は明示的に 1 回のみ初期化できます。 Final として宣言された参照変数は、別のオブジェクトを参照するように再割り当てすることはできません。ただし、オブジェクト内のデータは変更できます。したがって、オブジェクトの状態は変更できますが、参照は変更できません。変数の場合、final 修飾子は通常、定数をクラス変数にするために static とともに使用されます。例 publicclassTest{finalintvalue=10; //以下は定数の宣言の例です: &a

ColorOS15インターフェースが公開されました このマシンに関しては、ここが大きな変更点です。 ColorOS15インターフェースが公開されました このマシンに関しては、ここが大きな変更点です。 Aug 28, 2024 pm 03:31 PM

最近、ColorOS15 が内部ベータテストを開始し、一部のネットユーザーが関連インターフェイスを公開しました。上の写真でわかるように、一部のネットユーザーはアップグレード後の OPPO Find X7 の「このマシンについて」インターフェイスを投稿しました。 ColorOS15Betaでは、上部のパターンに大きな変更が加えられ、下半分の構成情報も以前の2列から1列の垂直分布に変更されました。添付されているのは、Huawei、Honor、Xiaomi、OPPO、vivo、Meizu の 6 つのブランドの携帯電話の最新バージョンの「この電話/携帯電話について」インターフェイスです。ColorOS 15 に関して、どのレイアウトが気に入っているか教えてください。以前のニュースでは、LivePhoto ライブ写真を広範囲にサポートすることに加えて、「AirDrop&

ColorOS15インターフェースが公開されました このマシンに関しては、ここが大きな変更点です。 ColorOS15インターフェースが公開されました このマシンに関しては、ここが大きな変更点です。 Aug 28, 2024 pm 03:31 PM

最近、ColorOS15 が内部ベータテストを開始し、一部のネットユーザーが関連インターフェイスを公開しました。上の写真でわかるように、一部のネットユーザーはアップグレード後の OPPO Find X7 の「このマシンについて」インターフェイスを投稿しました。 ColorOS15Betaでは、上部のパターンに大きな変更が加えられ、下半分の構成情報も以前の2列から1列の垂直分布に変更されました。添付されているのは、Huawei、Honor、Xiaomi、OPPO、vivo、Meizu の 6 つのブランドの携帯電話の最新バージョンの「この電話/携帯電話について」インターフェイスです。ColorOS 15 に関して、どのレイアウトが気に入っているか教えてください。以前のニュースでは、LivePhoto ライブ写真を広範囲にサポートすることに加えて、「AirDrop&

PHP の特別な構文: Static、Final、Abstract、その他のキーワード PHP の特別な構文: Static、Final、Abstract、その他のキーワード May 11, 2023 pm 04:00 PM

PHP は、Web 開発で広く使用されている人気のオープンソースのサーバー側スクリプト言語です。 PHP 言語は、学習と使用が簡単であるだけでなく、さまざまなプログラミング パラダイム、オブジェクト指向プログラミング、関数型プログラミングなどもサポートしています。 PHP には、Static、Final、Abstract などの特別な構文キーワードがいくつかあります。これらのキーワードは、オブジェクト指向プログラミングで特別な機能を持ちます。この記事では、これらのキーワードについて詳しく紹介していきます。静的キーワード PHP では、静的キーワードには 2 つの用途があります。

See all articles