Javaの静的変数:静的ブロック&メソッドとは【例】
静的には次のことができます:
<オール>最初に静的変数と静的メソッドを見てみましょう。
Java の静的変数とは?
Java の静的変数 クラスに属し、実行の開始時に一度だけ初期化される変数です。オブジェクト(インスタンス)ではなく、クラスに属する変数です。静的変数は、実行の開始時に一度だけ初期化されます。これらの変数は、インスタンス変数の初期化の前に最初に初期化されます。
- クラスのすべてのインスタンスで共有される単一のコピー
- 静的変数はクラス名で直接アクセスでき、オブジェクトは必要ありません
構文:
<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 Demo として実行します .
ステップ 3) 以下に期待される出力を示します
次の図は、参照変数とオブジェクトがどのように作成され、静的変数がさまざまなインスタンスからアクセスされるかを示しています。
ステップ 4) 構文 ClassName.Variable_Name を使用して、クラスの外部から静的変数にアクセスすることが可能です .行番号 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 のコメントを外します。保存、コンパイル、実行。
error: non-static variable a cannot be referenced from a static context a++;
ステップ 6) エラー =?これは、インスタンス変数「a」にアクセスできないためです。 」 Java 静的クラス メソッド「インクリメント」から 「.
Java の静的ブロックとは?
静的ブロック クラスが最初に JVM にロードされるときに実行される Java クラス内のステートメントのブロックです。 静的ブロックは静的データ メンバーの初期化に役立ちます 、ちょうどコンストラクターがインスタンス メンバーの初期化に役立つように。
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
Java