初学者ですが、個人的な勉強のためにまとめてみました
静的である
ロード後、クラスファイルの内容はstaticなものはstatic領域というメモリ領域に、それ以外はヒープ領域に配置される
static領域に配置されたクラス変数、クラスメソッドはそのクラス内で1つという位置付け。そのクラスからいくつインスタンスを生成してもインスタンスごとにメンバ変数、メソッドが割り当てられることはなく、一つのデータしか作成されない。したがって、すべてのインスタンスで同じ値を共有するのでインスタンスを作らなくても使える
※ロード・・・クラスファイルを読み込むこと
※クラス変数、クラスメソッド・・・static修飾子が付与されたものをクラス変数、クラスメソッド、static修飾子が付与されていないものをインスタンス変数、インスタンスメソッドと呼ぶ
staticのアクセス
staticなメンバはインスタンスの有無関係なしに使えるが、staticではないメンバは、インスタンスがないと使えない
このルールのため、staticメソッドはstaticで修飾されたもの以外にはアクセスできない
staticフィールド
・アクセスする方法は以下の2つ
①クラス名.フィールド名
②インスタンス作成後に変数名.フィールド名
・初期化する方法は以下の2つ
①宣言時に値を設定する
②staticイニシャライザで値を設定する
※staticイニシャライザ
・static修飾子が付与されたものだけがロード時に一度だけ実行されるブロック
・あるクラスをインスタンス化する前や、メインメソッドよりも前に呼び出し実行したい処理を記述
staticメソッド(クラスメソッド)
・staticメソッドはそのクラスに属し、インスタンスの状態に関係なく指定された処理を行うので、汎用的に使われる処理を実装するのによく使われる
・アクセス方法
①呼び出し
クラス名.メソッド名(引数、...)
②関数型インターフェースのメソッド参照
クラス名::メソッド名(引数、...)