Javaを学び始めると、最初に必ずと言っていいほど出てくるキーワードがstatic。
でも、
staticって具体的に何をしているの?
いつ使うべき?
staticをつけないとどうなるの?
という疑問を持つ方が多いかと思います。
この記事では、できるだけ分かりやすく、staticの意味や使いどころを例を交えて解説します。
目次
staticとは?
staticはクラスに属するという意味です。
通常の変数やメソッドはインスタンス(newで作ったオブジェクト)に属しますが、staticはクラス自体に属するため、オブジェクトを作らずに使うことができます。
よくある疑問と回答
- なぜmainメソッドにはstaticが付いているの?
-
123public static void main(String[] args) {System.out.println("Hello Java!");}
Javaプログラムを実行するとき、まず「クラス」を読み込むから。
プログラム開始時点ではまだオブジェクトがありません。
そこで、オブジェクト不要で実行できるようにするためstaticが付いています。 - static変数と普通の変数の違いは?
-
種類 所属 使うタイミング インスタンス変数 オブジェクト オブジェクトごとに独立した値を持ちたいとき static変数 クラス 全オブジェクトで共有したいとき 例:カウンター(全インスタンスで共有)
123456789101112131415public class Counter {static int count = 0;public Counter() {count++;}}public class Main {public static void main(String[] args) {new Counter();new Counter();System.out.println(Counter.count); // 2}}countは全インスタンスで共有されるため、2回インスタンス化すると値が2になります。 - Q3. staticメソッドっていつ使うの?
-
ユーティリティ処理
共通的な値や処理
インスタンスの状態に依存しないメソッド
例:Mathクラス
1double x = Math.sqrt(25); // sqrtはstaticメソッドMathクラスはnewしません。staticの代表例です。 - staticを付けすぎるとどうなる?
-
オブジェクト指向らしさが失われます。
何でもかんでもstatic → 関数型プログラムみたいになる
状態(フィールド)を持つ設計が難しくなる
✅ ルール
状態を持つもの → インスタンス
共通処理 → static
まとめ
| 用語 | 意味 |
|---|---|
| static | クラスに属する(オブジェクト不要) |
| static変数 | 全インスタンスで共通の変数 |
| staticメソッド | インスタンスに依存しない処理 |
| mainメソッドがstaticな理由 | 最初はオブジェクトがないため |
まずは「オブジェクト不要で使える」だけ覚えてOK!
使いながら感覚をつかみましょう ✅

