トップ 言語 Java アクセス修飾子、スコープ、定数 Javaのstatic修飾子

Javaのstatic修飾子―static変数、メソッド、イニシャライザ、インポートなど

static変数、staticメソッド、staticイニシャライザ、staticインポートなど。Javaのstatic修飾子についてまとめています。

▲記事トップへ

目次

この記事の目次です。

1. Javaのstatic修飾子とは
2. Javaのstaticメソッドとstatic変数
3. staticイニシャライザとstaticインポート

更新履歴

1. Javaのstatic修飾子とは

static修飾子は、フィールドやメソッド、クラスをインスタンス化しないで利用したい場合に指定します。

static修飾子が付いた変数やメソッドは、クラス変数、クラスメソッドと呼ばれ、プログラム内で共有されます。 オブジェクト間で共通の値を保持したい場合などに使用します。

Javaのstatic修飾子についてまとめると以下のようになります。

2. Javaのstaticメソッドとstatic変数

static修飾子は、変数およびメソッドに使用されます。

static変数

インスタンス変数はオブジェクトが作成されるときに初期化されるのに対して、 static変数はクラスのロード時に初期化されます。 また、static変数はインスタンス変数とは異なり、各オブジェクトごとに用意されるのではなく、クラスに対して1つだけ用意されます。

あるクラスをもとに複数のオブジェクトを生成している場合は、オブジェクト間で、同じstatic変数を共有して使用することになります。 このようにインスタンス化されたオブジェクト経由であっても同じstatic変数にアクセスすることになるため、 static変数は 参照変数名.static変数名 のアクセスだけではなく、クラス名.static変数名 でアクセスすることが出来ます。

staticメソッド

static変数と同じく、staticメソッドもクラスにおける特定のオブジェクトではなく、定義もとに属しています。 したがって、staticメソッドは、クラスのstaticメンバにしかアクセスできず、クラス内で定義されているstaticメソッドは、クラスの非static変数およびメソッドにはアクセスできません。 なお、staticメソッドは、クラス名.メソッド名( )で呼び出しが出来るため、インスタンス化しなくても利用可能です。

3. staticイニシャライザとstaticインポート

その他にstaticキーワードを使用したトピックとして、staticイニシャライザとstaticインポートがありますので、以下で見ていきます。

staticイニシャライザ

staticイニシャライザは、クラスファイルがロードされたタイミングで1度だけ実行されるブロックです。 クラスをインスタンス化する前や、main()メソッドを呼び出す前に実行したい処理に使用します。

staticイニシャライザは、以下のように記述します。

class Sample {
    static {
        // staticイニシャライザの処理
    }
        :
}

なお、インスタンス変数を初期化したり、コンストラクタで共有したい場合に使える、staticが付かないイニシャライザというものもあります。

class Sample {
    {
        // イニシャライザの処理
    }
        :
}

staticインポート

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メソッドが実行できる例となっています。

もっと知識を広げるための参考

もっと知識を広げるための参考です。

Javaのアクセス修飾子

public、protected、private、デフォルトなど。Javaのアクセス修飾子についてまとめています。

詳細

Javaのfinal修飾子

クラス、メソッド、変数、引数での使い方など。Javaのfinal修飾子についてまとめています。

詳細

Java言語

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インフラサーバー
公開Webサーバー

ITインフラネットワーク
プログラミング /構築

ITインフラセキュリティ
公開サーバーのセキュリティ

PC製品
ZOTAC

SI
ホームページの作り方

その他
IT用語 /ITスキル体系

スポンサーリンク

関連サイト内検索ツール

zealseedsおよび関連サイト内のページが検索できます。

IPアドレス確認ツール

あなたのグローバルIPアドレスは以下です。

44.220.131.93

HTMLの表示色確認ツール

パスワード生成ツール

文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。

ここに生成されます。

スポンサーリンク