Javaちょこっとリファレンス
HOME > staticメソッド/static変数

staticメソッド/static変数

メソッドやメンバ変数にstatic修飾子を付けると、staticメソッド、static変数になります。
static修飾子を付けると何が変わるかというと、newしなくてもそのメソッドやメンバ変数にアクセスできるようになります。

ちなみに、staticなメソッドや変数のことを、静的メソッド、静的変数 などと言ったりします。


例を見てみましょう。

サンプルソース

まずは通常版です。(InstanceSample.java)

例)通常メソッド、メンバ変数のサンプル

InstanceSample.java
public class InstanceSample {

    //通常メンバ変数
    public String val = "hoge";

    //通常メソッド
    public int add(int a, int b){
        return a + b;
    }
}


次にstatic版です。(StaticSample.java) (上のサンプルにstaticが付いただけです。)

例)staticメソッド、staticメンバ変数のサンプル

StaticSample.java
public class StaticSample {

    //staticメンバ変数
    public static String val = "hoge";

    //staticメソッド
    public static int add(int a, int b){
        return a + b;
    }
}



通常版を呼び出す時は、インスタンス化(new)してから呼び出します。

InstanceSample呼出
InstanceSample sample = new InstanceSample();
String a = sample.val;
int b = sample.add(10, 20);

※メンバー変数に直接アクセスするのはあまりよろしくないですがご了承ください。(^^ゞ


しかしstatic版を呼び出す時は、クラス名から直接呼び出すことができます。

StaticSample呼出
String a = StaticSample.val;
int b = StaticSample.add(10, 20);


staticメソッドや変数は、複数のところから呼ばれた場合は全ておなじ場所(メモリ)が参照されることになるので、ある所で変数の値を変更されたら他に参照しているところ全てに影響が出ることになります。

用途としては、以下のような場合に便利です

・共通関数を定義する場合
・共通定数を定義する場合
・複数クラス間で共通の値を共有したい場合

このエントリーをはてなブックマークに追加

Java基本カテゴリ

HOMEへ戻る TOPへ戻る