GeeksforGeeks

Prerequisite : static variables, final keyword

静的変数です。 変数の値が変化しない場合、インスタンス変数を使用するのは良い選択ではありません。 その時は、その変数にstatic修飾子をつければよいのです。 変数をstaticと宣言すると、クラスレベルで1つの変数が作成され、オブジェクトと共有されます。 この静的変数に変更があると、他のオブジェクトの動作に反映されます。 もし、私たちがスタティック変数を初期化しないなら、デフォルトでJVMはスタティック変数のためのデフォルト値を提供します。

しかし、final 修飾子を使用して静的変数を宣言する場合、次の規約に注意する必要があります。

  • 変数を static としてのみ宣言すると、それが宣言されているクラスの 1 つまたは複数のインスタンスがその値を変更する可能性があります。

final static variableに関する重要なポイント:

  1. 変数の初期化 必須:もしstatic variableがfinalとして宣言されたら、我々はそれを使うかどうかにかかわらず明示的に初期化を実行しなければならない。

    class Test {
    final static int x;
    public static void main(String args)
    {
    }

    
    
    
    

    アウトプットを行います。

    error: variable x not initialized in the default constructor
  2. クラス読み込み前の初期化 : 最終静的変数の場合、クラス読み込み完了前に初期化することが必須となります。 最終静的変数は宣言時に初期化することができます。

    class Test {
    final static int x = 10;
    public static void main(String args)
    {
    System.out.println(x);
    }
    }

    
    

    出力されます。

    10
  3. スタティックブロック内での初期化 : スタティックブロック内で最終スタティック変数を初期化することも可能です。

    class Test {
    final static int x;
    static
    {
    x = 10;
    }
    public static void main(String args)
    {
    System.out.println(x);
    }
    }

    
    

    出力されます。

    10

    上記以外の方法でfinal static変数を初期化しようとすると、コンパイルタイムエラーが発生します。

    class Test {
    final static int x;
    public static void m()
    {
    x = 10;
    }
    public static void main(String args)
    {
    System.out.println(x);
    }
    }

    
    

    
    

    出力します。

    error: cannot assign a value to final variable x

    final static variableの実装

    class MainClass {

    final static String company = "GFG";

    String name;
    int rollno;
    public
    static void main(String args)
    {
    MainClass ob = new MainClass();
    ob.company = "Geeksforgeeks";
    ob.name = "Bishal";
    ob.rollno = 007;
    System.out.println(ob.company);
    System.out.println(ob.name);
    System.out.println(ob.rollno);
    }
    }

    
    

    出力されます。

    error: cannot assign a value to final variable company

    この記事はBishal Kumar Dubeyによって寄稿されました。 GeeksforGeeksが好きで、貢献したい場合は、contribute.geeksforgeeks.orgを使って記事を書くか、[email protected] まで記事を郵送することもできます。 あなたの記事がGeeksforGeeksのメインページに表示され、他のGeeks.

    を助けるのを参照してください。

コメントを残す

メールアドレスが公開されることはありません。