「クラスに属する設計を掴め」
この問題集について
このステップアップ問題集では、static
修飾子の基本概念から、実践的な使用例(定数、ユーティリティクラス、ID発行、共有データなど)までを段階的に学び、Javaにおける「クラスに属するメンバ」の設計意図を理解することを目的としています。
対象は、static
の意味を「便利そうだけどよくわからない」と感じているJava初学者。
「いつ、なぜ static
を使うのか」を、設計視点で身につける問題集です。
取り扱う主な構文と概念
- static変数とインスタンス変数の違い
- staticメソッドの定義と呼び出し方
- public static final による定数の定義
- ユーティリティクラス設計(Mathクラス的構造)
- インスタンス生成に基づくstatic変数の更新
- static初期化ブロック
- staticと非staticのスコープと依存関係の理解
最終的なゴール
以下のような要素を含むスコア管理システムを、static
の理解に基づいて自力で設計・実装できることを目標とします:
- 全プレイヤーに共有される
highScore
をstatic
変数で保持 - 各プレイヤーごとの
score
はインスタンス変数で保持 setScore
のたびにhighScore
を自動更新- 設計上の「共有する意図」をコードに反映させる
- 設計上「newしなくていい」ものをstaticで書けるようになる
進め方
問題は Step01 〜 StepFinal まで、順に進む形式で構成されています。
1ステップごとに、static
を使ったコードの書き方だけでなく、「なぜそう設計するか」という視点を養っていきましょう。
書け。設計を体で覚えろ。
これがJava道場、static修羅道だ。
ステップアップ問題

Just Keep Typing, Baby! static修羅道:その変数、本当に new する必要ある?