Javaでstaticを使う方法
Javaでは、staticキーワードはクラスのメンバ変数とメンバメソッドを修飾するために使用できます。いくつかの用途があります。
- スタティック メンバー変数
静的メンバー変数はクラス自体に属しており、クラスのインスタンスオブジェクトに属するものではありません。クラスのロード時に初期化され、すべてのインスタンスオブジェクトが同じ静的変数を共有します。オブジェクトを作成せずにクラス名から直接アクセスできます。
public class MyClass {
public static int count; // 静态成员变量
public static void main(String[] args) {
MyClass.count = 10; // 直接通过类名访问静态变量
System.out.println(MyClass.count);
}
}
- 静的メンバーメソッド
staticメソッドはクラス名で直接呼び出すことができ、クラスのインスタンスを作成する必要がありません。また、staticメソッドではstaticメンバー変数にアクセスしたり、他のstaticメンバーメソッドを呼び出すことはできますが、非staticメンバー変数に直接アクセスしたり、非staticメンバーメソッドを呼び出すことはできません。
public class MyClass {
public static void printCount() { // 静态成员方法
System.out.println(MyClass.count);
}
public static void main(String[] args) {
MyClass.count = 10; // 直接通过类名访问静态变量
MyClass.printCount(); // 直接通过类名调用静态方法
}
}
- 静的コードブロック
静的コードブロックはクラスのロード時に実行され、たった一度実行されます。静的変数の初期化やその他の一回限りのタスクの実行に利用できます。
public class MyClass {
public static int count; // 静态成员变量
static { // 静态代码块
count = 10;
System.out.println("静态代码块执行");
}
public static void main(String[] args) {
System.out.println(MyClass.count);
}
}
なお、静的メンバ変数、静的メンバメソッドは、インスタンスを作成しなくてもクラス名で直接アクセスできますが、非静的メンバ変数、非静的メンバメソッドは、インスタンス経由でアクセスする必要があります。