Java Staticキーワードの例
Javaのstatic
キーワードは、メモリ効率の高いコードを作成するために使用される修飾子です。 オブジェクト、変数、メソッド定義によって占有されているメモリの管理に役立ちます。 staticキーワードは、関連するメソッド、オブジェクト、または変数のインスタンスが1つだけメモリに作成されるようにします。
特定の属性値を管理するためにクラスレベルの変数が必要な場合や、特定の操作を実行するためにクラスレベルのメソッドが必要な場合に使用されます。 staticキーワードの使用については、以下の各コンテンツで詳しく説明します。
1. 変数修飾子としてのSTATICキーワード
静的キーワード(変数に使用する場合)は、変数がクラスごとに1回だけインスタンス化されることを示します。 作成されるオブジェクトの数に関係なく、データ型ごとに1つのメモリユニットを占有します。 したがって、静的キーワードの値は、特定のクラスのすべてのオブジェクトにわたって共通です。
静的変数は、アクセスするためにオブジェクトインスタンスを必要としない変数の一種です。 構文<classname>.<variablename>
を使用して直接アクセスできます
例でそれを理解しましょう:
以下のコードは、従業員の特定の詳細を保持するクラスです。 作成される従業員の数をカウントするために使用されている静的変数「count」が含まれています。
Employee.java
package com.techfou; public class Employee { static int count = 0; private String name; private int leaves; Employee() { count++; } Employee(String name, int leaves) { this.name = name; this.leaves = leaves; count++; } public static int getCount() { return count; } public static void setCount(int count) { Employee.count = count; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getLeaves() { return leaves; } public void setLeaves(int leaves) { this.leaves = leaves; } }
以下のクラスは、静的変数の機能と動作をテストするために作成されたテストクラスです。 コードを実行すると、静的変数「count」の値がすべての従業員オブジェクトで共有されていることがわかります。
StaticVariableExample.java
package com.techfou; public class StaticVariableExample { public static void main(String[] args) { Employee e1 = new Employee("Employee1", 5); Employee e2 = new Employee("Employee2", 10); System.out.println("Employee Count using e1: " + e1.getCount()); System.out.println("Employee Count using e2: " + e2.getCount()); System.out.println("Employee Count using static reference: " + Employee.getCount()); } }
Employeeクラスでは、「count」はクラスごとに1回だけインスタンス化された静的変数です。 したがって、作成するオブジェクトの数に関係なく、「count」の値はすべてのオブジェクトで共有され、出力で明確に見ることができます。
「StaticExample」クラスを実行すると、次のように出力が取得されます。
Employee Count using e1: 2 Employee Count using e2: 2 Employee Count using static reference: 2
2. メソッド修飾子としてのSTATICキーワード
Javaの静的メソッドは、開発者がメソッドをユーザーに直接公開する場合、つまりメソッドを呼び出すための実際のオブジェクトを作成する必要がない場合に使用されます。 静的メソッドは、構文<classname>.<methodname>
を使用して直接呼び出すことができます。
静的メソッドは、静的変数とオブジェクトに対してのみ動作できます。 それに加えて、静的メソッドによって行われるメソッド呼び出しは、静的メソッドを順番に参照する必要があります。
例でこれを理解しましょう。
StaticMethodExample.java
package com.example; public class StaticMethodExample { private int x = 0; private static int y = 0; public static void main(String[] args) { // If uncommented, x++ gives compilation error // x++; // y++ works fine without compilation error y++; // If uncommented, sayHello() gives compilation error // sayHello(); // sayHi() works fine without compilation error sayHi(); System.out.println("Value of y is: " + y); } public void sayHello() { System.out.println("Hello"); } public static void sayHi() { System.out.println("Hi"); } }
上記のコードのコメントにも注意してください。 これらは、静的関数から非静的変数またはメソッドを参照する際にコンパイルエラーが発生する可能性があるコンテキストを指定します。 上記のコードを実行すると、次の出力が得られます。
Hi Value of y is: 1
ソースコードをダウンロード
ダウンロード–StaticKeyword.zip (6 KB)