static変数、staticメソッド、staticイニシャライザ、staticインポートなど。Javaのstatic修飾子についてまとめています。
この記事の目次です。
1. Javaのstatic修飾子とは
2. Javaのstaticメソッドとstatic変数
3. staticイニシャライザとstaticインポート
static修飾子は、フィールドやメソッド、クラスをインスタンス化しないで利用したい場合に指定します。
static修飾子が付いた変数やメソッドは、クラス変数、クラスメソッドと呼ばれ、プログラム内で共有されます。 オブジェクト間で共通の値を保持したい場合などに使用します。
Javaのstatic修飾子についてまとめると以下のようになります。
staticなメンバはクラスに所属しており、クラスにおける特定のオブジェクトには所属しません。 オブジェクト単位ではなく、クラス単位で用意されます。
static変数はクラスのロード時に初期化されます。 クラスのstaticメソッドは、そのクラスのstaticメンバにしかアクセスできません。
static修飾子は、変数およびメソッドに使用されます。
インスタンス変数はオブジェクトが作成されるときに初期化されるのに対して、 static変数はクラスのロード時に初期化されます。 また、static変数はインスタンス変数とは異なり、各オブジェクトごとに用意されるのではなく、クラスに対して1つだけ用意されます。
あるクラスをもとに複数のオブジェクトを生成している場合は、オブジェクト間で、同じstatic変数を共有して使用することになります。 このようにインスタンス化されたオブジェクト経由であっても同じstatic変数にアクセスすることになるため、 static変数は 参照変数名.static変数名 のアクセスだけではなく、クラス名.static変数名 でアクセスすることが出来ます。
static変数と同じく、staticメソッドもクラスにおける特定のオブジェクトではなく、定義もとに属しています。 したがって、staticメソッドは、クラスのstaticメンバにしかアクセスできず、クラス内で定義されているstaticメソッドは、クラスの非static変数およびメソッドにはアクセスできません。 なお、staticメソッドは、クラス名.メソッド名( )で呼び出しが出来るため、インスタンス化しなくても利用可能です。
その他にstaticキーワードを使用したトピックとして、staticイニシャライザとstaticインポートがありますので、以下で見ていきます。
staticイニシャライザは、クラスファイルがロードされたタイミングで1度だけ実行されるブロックです。 クラスをインスタンス化する前や、main()メソッドを呼び出す前に実行したい処理に使用します。
staticイニシャライザは、以下のように記述します。
class Sample { static { // staticイニシャライザの処理 } : }
なお、インスタンス変数を初期化したり、コンストラクタで共有したい場合に使える、staticが付かないイニシャライザというものもあります。
class Sample { { // イニシャライザの処理 } : }
staticインポートは、static変数やstaticメソッドをクラス名を指定しないで利用できるようにする機能です。 import staticキーワードを使用します。
staticインポートは、例えば以下の「import static org.junit.Assert.*;」ようにjunitのAsert.xxxメソッドを使用したい時などに使用します。
import static org.junit.Assert.*; import org.junit.Test; import com.zealseeds.Sample; public class SampleTest { @Test public void test_コンストラクタ() { Sample sample = new Sample(); assertNotNull(sample); } : }
上記の例では、assertNotNullだけ記述してAssert.assertNotNullメソッドが実行できる例となっています。
もっと知識を広げるための参考です。
public、protected、private、デフォルトなど。Javaのアクセス修飾子についてまとめています。
クラス、メソッド、変数、引数での使い方など。Javaのfinal修飾子についてまとめています。
Javaとは?から言語の枠を超えるところまで、Java言語についてまとめています。
更新履歴になります。
スポンサーリンク
サイト内のページ
言語
C・C++
/HTML
/Java
/JavaScript
/PHP
/シェルスクリプト
開発環境
Ant
/Burp
/Eclipse
/Fiddler
/gcc
/gdb
/Git
/g++
/JDK
/JMeter
/JUnit
/Teraterm
/ZAP
技術・仕様
Ajax
/CORBA
/Jakarta EE(旧称J2EE、Java EE)
/JNI
ライブラリ/Framework/CMS
bootstrap
/jQuery
/FuelPHP
/Lucene
/MyBatis
/Seasar2
/Spring
/Struts
/WordPress
Web API
Google Maps
ITインフラOSとミドルウェア
Linux
/Windows
/シェル
ActiveMQ
/Tomcat
/MariaDB
/MySQL
/Nagios
/Redis
/Solr
ITインフラセキュリティ
公開サーバーのセキュリティ
SI
ホームページの作り方
スポンサーリンク
関連サイト内検索ツール
zealseedsおよび関連サイト内のページが検索できます。
IPアドレス確認ツール
あなたのグローバルIPアドレスは以下です。
52.14.100.101
HTMLの表示色確認ツール
パスワード生成ツール
文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。
ここに生成されます。
スポンサーリンク
Copyright (C) 2007-2024 zealseeds. All Rights Reserved. Loarding…