【Java】staticについての挙動や使い方まとめ
  • facebookページ
  • twitterページ
  • 2019.09.19

    【Java】staticについての挙動や使い方まとめ

    Javaにはstaticメソッドやstatic変数というものがありますが、今回の記事では実際にstaticとはどういうものなのかについて解説をしていきます。

    staticとは

    staticとは「静的」を意味し、冒頭でも述べたようにJavaには「staticメソッド」や「static変数」というものがあります。staticの対義語には非staticというものもありますが、このstatic(静的)とは変わることのないものを表します。

    よってstaticメソッドとは、他からの影響を受けることなく処理をさせる場合に記述するメソッドを指します。またstatic変数とは、インスタンス毎に変わることのないクラス全体で統一された値を持つ変数のことです。

    宣言について

    宣言は以下の通りです。

    staticメソッド

    static変数

    コードの書き方

    staticメソッド

    基本となる書き方について説明します。

    まず気を付けなければならないことは、非staticな変数やメソッドはstaticメソッドの中で使用することが出来ないという点です。

    またインスタンス化による影響も受けないため、インスタンスを示すthisも使うことが出来ません。

    記述についてですが、staticメソッドはその特徴としてnewを使わずに呼び出すことができます。記述方法は以下の通りです。

    なお、mainメソッドの宣言には必ずstaticを付ける必要が有りますので忘れないようにしてください。

    それでは実際のコードを使って解説していきます。

    実行結果

    このコードでは、メインクラスであるJavaSampleClassのmainメソッドで、外部クラスであるsampleTestのsampleMethodというstaticメソッドを使用しています。

    このコードの実行結果からも分かる通り、sampleTestをインスタンス化することなく呼び出しに成功しています。

    では次にエラーとなるコードを見てみましょう。

    実行結果

    このコードでは、先ほどのコードを基にローカル変数をメンバ変数に変えてみただけのコードです。ただしメンバ変数からはstaticを外しています。

    実行結果はご覧の通り、コンパイルエラーが返ってきています。これで非staticな変数やメソッドはstaticメソッドの中で使用することが出来ないことが分かっていただけたと思います。

    static変数

    まず最初にstatic変数の記述に関してですが、static変数は次のように記述します。

    また記述方法を見ていただいても分かるように変数名をクラス名の後ろに記述しますのでstatic変数は「クラス変数」と言います。逆に非static変数はインスタンス名の後ろに記述するため「インスタンス変数」とも言います。

    static変数についても実際のコードを使って解説していきます。

    実行結果

    このコードでは、メインクラスであるJavaSampleClassのmainメソッドでfor構文を使い3回インスタンスを生成しています。外部クラスであるsampleTestではコンストラクタを使いインスタンス生成毎にval_a及びval_bに1を代入加算しています。

    実行結果を見てみると、static変数である”val_a”ではインスタンス生成毎に1ずつ加算されているのに対し、非static変数である”val_2″ではインスタンス生成毎に値が初期化される為、何度繰り返しても1のままになっています。

    この結果から、static変数に関しても「staticとは」で説明したようにstatic変数だけがインスタンスに左右されることなく、クラス全体で一つの値を共有するクラス変数の役割を担っていることが分かります。

    まとめ

    今回はstaticについてメソッドや変数の特徴や使い方の説明をしました。

    staticの意味や使い方を正しく理解できていればきちんと整理されたコードを組むことが出来ますので、後々修正が必要になった場合にも最小部分の修正のみで完結することが可能です。

    開発に慣れてくるとコード量も増えてきますので、正しいコードの構築を常に心がけ最小の構成で動作させることが出来るよう、staticの使い方もしっかりと訓練しておきましょう。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE