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