静的変数 Java

静的なものは次のとおりです。

  1. 静的変数
  2. 静的メソッド
  3. コードの静的ブロック。

まず静的変数と静的メソッドを見てみましょう。

静的変数とは何か Java?

静的変数 Java クラスに属する変数で、実行開始時に一度だけ初期化されます。 これはオブジェクト(インスタンス)ではなくクラスに属する変数です。 静的変数は、実行の開始時に XNUMX 回だけ初期化されます。 これらの変数は、インスタンス変数が初期化される前に、最初に初期化されます。

  • クラスのすべてのインスタンスで共有される単一のコピー
  • 静的変数にはクラス名によって直接アクセスでき、オブジェクトは必要ありません。

構文:

<class-name>.<variable-name>

静的メソッドとは Java?

静的メソッド Java はオブジェクトではなくクラスに属するメソッドです。 静的メソッドは静的データのみにアクセスできます。 オブジェクト(インスタンス)ではなくクラスに属するメソッドです。 静的メソッドは静的データのみにアクセスできます。 非静的データにはアクセスできません (インスタンス変数).

  • 静的メソッドは他の静的メソッドのみを呼び出すことができ、そこから非静的メソッドを呼び出すことはできません。
  • 静的メソッドにはクラス名によって直接アクセスでき、オブジェクトは必要ありません。
  • 静的メソッドでは、「this」または「super」キーワードを参照することはできません。

構文:

<class-name>.<method-name>

注意: main メソッドは静的です。これは、インスタンス化が行われる前にアプリケーションを実行するためにアクセスできる必要があるためです。

いくつかの演習を行って、静的キーワードのニュアンスを学びましょう。

例: 静的変数とメソッドを呼び出す方法

ステップ1) 次のコードをエディターにコピーします

public class Demo{
   public static void main(String args[]){
     Student s1 = new Student();
     s1.showData();
     Student s2 = new Student();
     s2.showData();
     //Student.b++;
     //s1.showData();
  }
}

class Student {
int a; //initialized to zero
static int b; //initialized to zero only when class is loaded not for each object created.

  Student(){
   //Constructor incrementing static variable b
   b++;
  }

   public void showData(){
      System.out.println("Value of a = "+a);
      System.out.println("Value of b = "+b);
   }
//public static void increment(){
//a++;
//}

}

ステップ2) コードを保存してコンパイルします。 コードを次のように実行します。 Java デモ.

ステップ3) 予想される出力を以下に示します


Java 静的メソッドと変数

次の図は、参照変数とオブジェクトがどのように作成され、静的変数がさまざまなインスタンスによってどのようにアクセスされるかを示しています。


Java 静的メソッドと変数

ステップ4) 次の構文を使用してクラスの外部から静的変数にアクセスできます。 クラス名.変数名。 行番号 7 と 8 のコメントを解除します。 保存、コンパイル、実行。 出力を観察します。

Value of a = 0
Value of b = 1
Value of a = 0
Value of b = 2
Value of a = 0
Value of b = 3

ステップ5) 行 25,26、27、XNUMX のコメントを解除します。 保存し、コンパイルして実行します。

	 error: non-static variable a cannot be referenced from a static context a++; 

ステップ6) エラー = ? これはインスタンス変数にアクセスできないためです。a” Java 静的クラスメソッドより”増加"

静的ブロックとは Java?

当学校区の 静的ブロック は、 Java クラスが最初にロードされたときに実行されるクラス JVMに直接影響を与えます。健全とされるのは 静的ブロックは静的データ メンバーの初期化に役立ちますコンストラクターがインスタンス メンバーの初期化に役立つのと同じように。

class Test{
 static {
 //Code goes here
 }
}

次のプログラムは Java 静的ブロックの例です。

例: 静的ブロックにアクセスする方法

public class Demo {
 static int a;
 static int b;
 static {
    a = 10;
    b = 20;
 }
 public static void main(String args[]) {

  System.out.println("Value of a = " + a);
  System.out.println("Value of b = " + b);

 	}
}

プログラムから次の出力が得られます。

Value of a = 10
Value of b = 20