【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の使い方もしっかりと訓練しておきましょう。


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料25万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

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









    ABOUT US

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

    READ MORE

    ポテパンおすすめ案件