【Java】staticの使い方をわかりやすく解説

Javaの static(スタティック)は、「クラスに属するもの」を意味します。これは「インスタンス(オブジェクト)を作らずに使えるメンバ」を定義するために使われます。


✅ ざっくり定義

種類 意味
static 変数 クラス全体で共有される1つの変数(共通データ)
static メソッド インスタンスを作らなくても使える関数
static ブロック クラスが初めて読み込まれたときに1回だけ実行

✅ 例で理解する

📦 クラスと static の関係

java
public class Hello {

    static int count = 0; // static変数(クラスで共有)

    public static void sayHello() {
        System.out.println("こんにちは!");
    }

    public void increment() {
        count++;
    }
}

📌 使い方(mainから)

java
public class Main {
    public static void main(String[] args) {
        Hello.sayHello(); // インスタンスなしでOK!

        Hello h1 = new Hello();
        Hello h2 = new Hello();

        h1.increment();
        h2.increment();

        System.out.println(Hello.count); // 2(すべてのインスタンスで共有)
    }
}

static の特徴まとめ

項目 説明
所属先 クラスに所属(インスタンスに属さない)
使用方法 クラス名.メンバ名 でアクセスできる
メモリ上の特徴 1つだけメモリに存在し、すべてのインスタンスで共有
代表例 Math.abs(), System.out.println() など

✅ よく使うパターン

1. 定数定義

java
public class Config {
    public static final String VERSION = "1.0";
}
java
System.out.println(Config.VERSION);

2. ユーティリティクラス(インスタンス不要)

java
public class MathUtil {
    public static int square(int x) {
        return x * x;
    }
}
java
int n = MathUtil.square(5);  // 25

3. カウンターや共通の状態

java
public class User {
    public static int userCount = 0;

    public User() {
        userCount++;
    }
}

🚫 static の注意点

  • static メソッドでは 非staticなメンバは使えない

    java
     
    public static void printName() {
        System.out.println(this.name); // ← エラー!
    }
    
  • 状態を共有するため、スレッドセーフじゃないこともある(特にWebアプリで注意)


🎓 まとめ

用途 キーワード
共有変数 static 変数
便利関数 static メソッド
一度だけの初期化処理 static 初期化ブロック
 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP