国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ Java &#&はじめる Javaオブジェクト指向の最終修飾子

Javaオブジェクト指向の最終修飾子

Nov 26, 2019 pm 02:43 PM
final java 修飾子 オブジェクト指向

Javaオブジェクト指向の最終修飾子

1. 最終修飾子の定義:

final キーワードは、クラス、変數、メソッドを変更するために使用できます

final変數を使用する場合、変數は初期値を取得すると変更できないことを意味します(厳密には、final で変更された変數は変更できません。初期値を取得すると、final 変數の値を再代入することはできません) )

final はメンバー変數 (クラス変數とインスタンス変數) だけでなく、ローカル変數や仮パラメータも変更できます

関連ビデオ學習チュートリアル:Java オンライン學習

2. 最終メンバー変數の構文では次のように規(guī)定されています:

最終変更メンバー変數にはプログラマによって明示的に指定された初期値が必要であり、システムは最終メンバーを暗黙的に初期化しません。

1. 最終的に変更されたクラス変數およびインスタンス変數が初期値を設定できる場所は次のとおりです:

クラス変數: 初期値は靜的初期化ブロックまたはクラス変數を宣言するとき、 value と

インスタンス変數は 2 つの場所のいずれかでのみ指定する必要があります: 初期値はインスタンス変數の宣言內の非靜的初期化ブロックで指定する必要があります。またはコンストラクター內で、3 か所のみそのうちの 1 つが指定されます

注: 通常の初期化ブロックでインスタンス変數の初期値が指定されている場合、インスタンス変數の初期値を指定することはできなくなります。コンストラクター內のインスタンス変數

次のプログラムは、最終的に変更されたメンバー変數の効果を示しています:

package lextends;
public class FinalVariableTest {
    //定義成員變量時指定默認值,合法
    final int a = 6;
    //下面變量將在構造器或初始化塊中分配初始值
    final String str;
    final int c;
    final static double d;

    //既沒有指定默認值,又沒有在初始化塊、構造器中指定初始值
    //下面定義的ch實例是不合法的
    //final char ch;
    //初始化塊,可對沒有指定默認值的實例變量指定初始值
    {
        //在初始化塊中為實例變量指定初始值,合法
        str = "Hello";
        //定義a實例變量時已經指定了默認值
        //不能為a重新賦值,因此下面賦值語句非法
        //a=9;
    }

    //靜態(tài)初始化塊,可對沒有指定默認值的類變量指定初始值
    static {
        //在靜態(tài)初始化塊中為類變量指定初始值,合法
        d = 5.6;
    }

    //構造器,可以對既沒有指定默認值,又沒有在初始化塊中,指定初始值的實例變量指定初始值
    public FinalVariableTest() {
        //如果在初始化塊中已經對str指定了初始值
        //那么在構造器中不能對final變量重新賦值,下面賦值語句非法
        //str="java"
        c = 5;
    }

    public void changeFinal() {
        //普通方法不能為final修飾的成員變量賦值
        //d=1.2
        //不能在普通方法中為final成員變量指定初始值
        //ch = 'a';
    }
public static void mian(String[] args){
    FinalVariableTest ft= new FinalVariableTest();
    System.out.println(ft.a);
    System.out.println(ft.c);
    System.out.println(ft.d);}
}

2. コンストラクターまたは初期化ブロックで最終メンバー変數を初期化する予定の場合、初期化前にメンバー変數の値にアクセスしないでください。

package lextends;
public class FinalErrorTest {
    //定義一個final修飾的實例變量
    //系統不會對final成員變量進行默認初始化
    final int age;
    {
        //age沒有初始化,所以此處代碼將引起錯誤,因為它試圖訪問一個未初始化的變量
        //只要把定義age時的final修飾符去掉,程序就正確了
        System.out.println(age);
        
        age=6;
        System.out.println(age);
    }
    public static void main(String[] args){
        new FinalErrorTest();
    }
}

3. 最終的なローカル変數

1. 定義: システムはローカル変數を初期化しません。ローカル変數はプログラマによって明示的に初期化される必要があります。したがって、final を使用してローカル変數を変更する場合、定義時にデフォルト値を指定することも、デフォルト値を指定することもできません。

次のプログラムは、ローカル変數と仮パラメータの最終的な変更を示しています。

(最終的に変更された仮パラメータのケース。このメソッドが呼び出されると、システムは、

package lextends;
public class FinalLocalVariable {
    public void test(final int a){
        //不能對final修飾的形參賦值,下面語句非法
        //a=5;
    }
    public static void mian(String[] args){
        //定義final局部變量時指定默認值,則str變量無法重新賦值
        final String str="hello";
        //下面賦值語句非法
        //str="Java";
        
        //定義final局部變量時沒有指定默認值,則d變量可被賦值一次
        final double d;
        d=5.6;
        //對final變量重新賦值,下面語句非法
        //d=6.4;
    }
}

4. 最終的に変更された基本型変數と參照型変數の違い

# #最終変更を使用する參照型変數は再割り當てできませんが、參照型変數によって參照されるオブジェクトの內容は変更できます

たとえば、以下の iArr 変數によって參照される配列オブジェクト、その後の iArr 変數最終的な変更は再代入できませんが、iArr 要素が參照する配列の配列は変更できます

eg.
//final修飾數組元素,iArr是一個引用變量
final int[] iArr={5,6,12,9};
System.out.println(Arrays.toString(iArr));
//對數組元素進行排序,合法
Arrays.sort(iArr);
System.out.println(Arrays.toString(iArr));
//對數組進行元素賦值,合法
iArr[2]=-8;
System.out.println(Arrays.toString(iArr));
//下面語句對iArr重新賦值,非法
//iArr=null;

5.「マクロ置換」を実行できる最終変數

1 . 最終変數の場合、それがクラス変數であっても、インスタンス変數であっても、ローカル変數であっても、その変數が 3 つの條件を満たす限り、この最終変數は変數ではなくなり、直接量と等価になります。

(1) Final 修飾子を使用して変更する

(2) Final 変數定義時に初期値を指定する

(3) 初期値はコンパイル時に設定可能time Determined

2.final 修飾子の重要な用途は、「マクロ変數」を定義することです。最終的な変數が定義されると、その変數に初期値が代入され、変數であるかどうかを決定できます。この場合、この最終的な変數は本質的に「マクロ変數」となり、コンパイラはこれを使用するすべての変數を削除します。プログラム內の変數を変數の値に直接置き換えます。

3,

eg.
String s1="瘋狂Java";
//s2變量引用的字符串可以在編譯時就確定下來
//因此s2直接引用變量池中已有的"瘋狂Java"字符串
String s2="瘋狂"+"Java";
System.out.println(s1==s2);//true

//定義兩個字符串直接量
String str1="瘋狂";
String str2="Java";
String s3=str1+str2;
System.out.println(s1==s3);//false
s3 の場合、その値は str1 と str2 を連結することによって取得されます。str1 と str2 は単なる 2 つの通常の変數であるため、コンパイラーは「マクロ」「Replace」を実行しません。そのため、コンパイラは s3 の値を決定できず、s3 が文字列プールにキャッシュされた「Crazy Java」を指すようにすることもできません。

その他の Java 関連の記事やチュートリアルについては、次のリンクを參照してください:

Java 入門チュートリアル

以上がJavaオブジェクト指向の最終修飾子の詳細內容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中國語版

SublimeText3 中國語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JDBCを使用してJavaのトランザクションを処理する方法は? JDBCを使用してJavaのトランザクションを処理する方法は? Aug 02, 2025 pm 12:29 PM

JDBCトランザクションを正しく処理するには、最初に自動コミットモードをオフにし、次に複數の操作を実行し、結果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開始します。 2。挿入や更新など、複數のSQL操作を実行します。 3。すべての操作が成功した場合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場合はconn.rollback()を呼び出します。同時に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設定して部分的なロールバックを達成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお勧めします。

Javaでカレンダーを操作する方法は? Javaでカレンダーを操作する方法は? Aug 02, 2025 am 02:38 AM

Java.Timeパッケージのクラスを使用して、古い日付とカレンダーのクラスを置き換えます。 2。LocalDate、LocalDateTime、LocalTimeを通じて現在の日付と時刻を取得します。 3。of()メソッドを使用して特定の日付と時刻を作成します。 4.プラス/マイナスメソッドを使用して、時間を不正に増加させて短縮します。 5. ZonedDateTimeとZoneIDを使用して、タイムゾーンを処理します。 6。DateTimeFormatterを介したフォーマットおよび解析の文字列。 7.インスタントを使用して、必要に応じて古い日付型と互換性があります。現代のJavaでの日付処理は、java.timeapiを使用することを優(yōu)先する必要があります。

Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

Garbage CollectionはJavaでどのように機能しますか? Garbage CollectionはJavaでどのように機能しますか? Aug 02, 2025 pm 01:55 PM

JavaのGarbage Collection(GC)は、メモリを自動的に管理するメカニズムであり、到達不可能なオブジェクトを取り戻すことでメモリ漏れのリスクを軽減します。 1.GCルートオブジェクトからのオブジェクトのアクセシビリティ(スタック変數、アクティブスレッド、靜的フィールドなど)、および到達不可能なオブジェクトはゴミとしてマークされています。 2。マーククリアリングアルゴリズムに基づいて、すべての到達可能なオブジェクトをマークし、マークのないオブジェクトをクリアします。 3.世代の収集戦略を採用する:新世代(Eden、S0、S1)は頻繁にMinorGCを実行します。高齢者のパフォーマンスは少なくなりますが、MajorGCを実行するのに時間がかかります。 Metaspaceはクラスメタデータを保存します。 4。JVMはさまざまなGCデバイスを提供します。SerialGCは小さなアプリケーションに適しています。 ParallelGCはスループットを改善します。 CMSが減少します

HTTPミドルウェアロギングの例を例に進めます HTTPミドルウェアロギングの例を例に進めます Aug 03, 2025 am 11:35 AM

GOのHTTPログミドルウェアは、リクエストメソッド、パス、クライアントIP、および時間がかかることを記録できます。 1. http.handlerfuncを使用してプロセッサをラップします。2。next.servehttpを呼び出す前後の開始時間と終了時間を記録します。完全なサンプルコードの実行が検証されており、中小のプロジェクトの開始に適しています。拡張機能の提案には、ステータスコードのキャプチャ、JSONログのサポート、リクエストIDトラッキングが含まれます。

ユーザーデータにHTML「入力」タイプを使用します ユーザーデータにHTML「入力」タイプを使用します Aug 03, 2025 am 11:07 AM

適切なHTMLinputタイプを選択すると、データの精度を向上させ、ユーザーエクスペリエンスを向上させ、使いやすさを向上させることができます。 1.テキスト、電子メール、電話、番號、日付など、データ型に従って対応する入力タイプを選択します。 2。HTML5を使用して、より直感的な相互作用方法を提供できるURL、色、範囲、検索などの新しいタイプを追加します。 3.プレースホルダーと必要な屬性を使用して、フォームフィリングの効率と精度を改善しますが、プレースホルダーがラベルを置き換えることはできないことに注意してください。

Javaビルドツールの比較:Maven vs. Gradle Javaビルドツールの比較:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

gradleisthebetterchoiceformostnewprojectoitssuperorfficability、performance、andmoderntoolingsupport.1.gradle’sgroovy/kotlindslismoreconciseandexpressiveethanmaven’sverboseml.2.gradleorformsmavenbenbumebutedwitedwitedwitedspedexは

説明された延期聲明の例で進みます 説明された延期聲明の例で進みます Aug 02, 2025 am 06:26 AM

Deferは、クリーニングリソースなど、関數が戻る前に指定された操作を実行するために使用されます。パラメーターは、延期時にすぐに評価され、関數は最後のファーストアウト(LIFO)の順に実行されます。 1.複數の債務は、宣言の逆の順序で実行されます。 2.ファイルの閉鎖などの安全なクリーニングに一般的に使用されます。 3。指定された返品値を変更できます。 4.回復に適したパニックが発生した場合でも実行されます。 5。リソースの漏れを防ぐために、ループで延期の亂用を避けます。正しい使用により、コードのセキュリティと読みやすさが向上します。

See all articles