【Java開発】第11回 static

Java入門講座

初めに

皆さん。こんにちは!

DreamHanksの254cmです。

今回はstaticについて説明していきます。

Java記事のまとめはこちらです。

前回の記事は【Java開発】第10回 ArrayListです。

 

static

staticとは?

staticはクラスの構成要素に付与できる修飾子として、メソッドとフィールドに付与することができます。

付与されたフィールドおよびメソッドはプログラムが実行される時、メモリの割り当てを受けて

プログラムが終了されるまで消えずに維持されます。そしてその値はすべてのインスタンスが共有します。

 

staticフィールド

一般的なフィールドはインスタンスが生成されるたびに新しく生成され、様々な値を持ちますが、

staticが付与されたフィールドはプログラムが実行される時に生成され、すべてのインスタンスが共有します。

サンプル

実行結果

上記のサンプルではStudentクラスのインスタンスを生成して各インスタンスのstudentNumの値を出力しています。

各インスタンスのstudentNumに何も代入していませんが、二つ全部20000が出力されました。

つまりすべてのインスタンスはstaticフィールドの値を共有しています。

サンプル

実行結果

すべてのインスタンスがstaticフィールドを共有しているので、すべてのインスタンスで

行った処理の結果も共有されます。

image.png

サンプルを実行結果をみるとStudentのすべてのインスタンスは同じstudentNumを指していることがわかります。

※static変数のメモリは他の変数と異なる領域に格納されます。その領域をmethod領域と呼びます。

staticフィールドはインスタンスと別の時点に生成されるので、インスタンスではなくクラスの名前で参照することができます。

サンプル

実行結果

上記のようにインスタンスを使っても、使わなくてもstatic変数を呼び出すことができます。

staticメソッド

static修飾子はクラスの構成要素につけるので、メソッドにもstatic修飾子をつけることができます。

こんなメソッドをstaticメソッドと呼びます。staticメソッドにはstaticフィールドとローカル変数しか使えません。

サンプル

実行結果

上記のようにインスタンスを生成しなくても、クラスの名前を参照して呼び出すことができます。

staticメソッドで使える変数

staticは先ほどの説明した通り、ローカル変数とstaticフィールドしか使えません。

staticメソッドはインスタンスを生成しなくても使えるメソッドです。

なので、一般のフィールドはインスタンスが生成される時に生成されるので、

staticメソッドでは使えません。

 

・ローカル変数とは?

括弧「{}」の中で宣言され、宣言された括弧の中でのみ使える変数です。

ローカル変数は宣言された領域が終了されるとなくなる変数です。

 

終わりに

今回の記事は以上になります。

次回はJavaのfinalを学びましょう。

ご覧いただきありがとうございます。

 

Java入門講座
スポンサーリンク
dreamhanksをフォローする
スポンサーリンク
DreamHanks Blog

コメント