🌟

(java) staticのポイントまとめ

に公開

staticはいつも混乱するけど、今度こそ理解したい!
⭐️static は クラスに属するメンバー(変数・メソッドなど) を定義するキーワードです。
つまり、インスタンスを生成しなくても使えるというのが最大の特徴です。

staticのポイントまとめ

  • staticはクラスに属しており、インスタンス化せずに使用できる
  • static変数(クラス変数)は、すべてのインスタンスで共有される
  • staticメソッドは、インスタンス化せずにクラス名から呼び出すことができる
     → そのため、インスタンス変数やインスタンスメソッドを直接使うことはできない
  • staticブロックは、クラスがロードされるときに一度だけ実行される初期化コードを入れる場所。
  • staticインナークラスは、外部クラスのインスタンスなしで使用できるネストクラス(内部クラス)

例文

public class Sample {
    static int count = 0; // static 変数

    int id; // インスタンス変数

    //コンストラクタ
    public Sample() {
        count++; //クラス全体で共通の変数
        id = count;
    }

    static void showCount() {
       // System.out.println(id); // ❌インスタンス変数は使えない
        System.out.println("作成されたインスタンス数: " + count);
    }

    public static void main(String[] args) {
        Sample.showCount(); // クラス名で呼び出す  → 出力: 0

        Sample s1 = new Sample(); //コンストラクタでcount増加 
        Sample s2 = new Sample(); //コンストラクタでcount増加

        Sample.showCount(); //インスタンス2個生成後、呼び出された → 出力: 2

        s1.showCount(); // ✅ 文法的には問題ないが、あまり推薦されない  → 出力: 2
    }
}

Discussion