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!
使いながら感覚をつかみましょう ✅

