【java】static は変数・メソッドを作る
クラスに属するメンバー(変数・メソッド)を作る
オブジェクトに属さない
- new しなくても使える
- クラス名から直接使える
static なし(普通)
Task t = new Task("勉強");
t.toggleDone();
static あり
Math.random(); // ← new してない
Mathクラスは Java標準のクラスだけど、どのメソッドも static
→インスタンスを作らず、すぐ使える
static の種類
static メソッド
public static void hello() {
System.out.println("こんにちは");
}
// 呼び出し方
TaskManager.hello();
newしなくていい- 状態(プロパティ)を持つ必要がない処理に使う
static 変数
クラス全体で共有する変数
public static int count = 0;
全インスタンスで 1つしか存在しない
例:生成したタスクの総数を数えるときなど。
static を使うべき?
使うべき場面
- 何かの「ユーティリティ処理」をまとめたいとき
例:文字数カウント、日付フォーマット、乱数生成など - クラス単位で共有したい値があるとき
例:クラス全体のID採番
使わないほうがいい場面
- Task や TaskManager のように「状態(データ)」を持つオブジェクトを扱うとき
→staticは共有されてしまうから
例:複数の TaskManager をnewしたら、staticだとデータが全部まとめて共有されて変なことに
Main の static の意味は?
public static void main(String[] args) {
Java がアプリを起動するとき、最初に呼ぶメソッドは static でないと困る
→ Java はまだ何も new してないから!
main はインスタンスがなくても呼べる必要がある → static が必須!