JavaA2Z

KAB-studio > プログラミング > JavaA2Z > static finalとは

static final

日本語 静的最終
英語 static final
ふりがな すたてぃっくふぁいなる
フリガナ スタティックファイナル

解説

staticfinalのふたつの予約語で修飾されたもの。
フィールドに「static final フィールド= 初期値;」の形式で使用する。
このstatic finalフィールドは、staticフィールドのためインスタンスを作らずに使用でき、final変数のため値が変更できない。そのため、定数値を宣言する場合に使用される。
 
リテラルは、プログラム上に直接書くと修正が難しくなる。
たとえば「int i = 100;」と書かれている場合に、この「100」という値の意味が分からず、また、プログラム上に複数の「100」がある場合、それぞれの値が同じ意味を持つのかそれとも別の意味の「100」なのかが判別できない。
そのため、リテラルはstatic finalフィールドとして宣言し、それを使い回すことが推奨される。
 
通常、static finalフィールド変数名は大文字小文字の間を_で継なぎ、さらに全て大文字で記述する。
static finalフィールドクラスの中でのみ使用する場合にはprivateフィールドに、外からも使用できるようにする場合にはpublicフィールドにした方が良いだろう。
ただし、publicフィールドとする場合、それぞれのクラスに作ると検索や修正が面倒になるため、通常は専用のクラスをひとつ作り、その中にまとめてpublic static finalフィールド宣言した方が良いだろう。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    /**
    *   static finalフィールド。
    *   アクセス修飾子は付けていませんが、通常、
    *   クラス内でのみ使用するときはprivateフィールド、
    *   他のクラスから使う時にはpublicフィールドにします。
    *   finalで定数値化されているので、publicでも問題
    *   ありません。ただ、publicフィールドの場合には
    *   定数値を入れる専用のクラスを作り、その中にまとめた方が
    *   いいでしょう。
    */
    static final String SYSTEM_NAME = "JavaA2Z";
    
    public static void main( String[] args )
    {
        // 定数値SYSTEM_NAMEを使用します。
        System.out.println( SYSTEM_NAME );
        // JavaA2Z
        // staticなのでstaticメソッドからも
        // 普通のメソッドからも使えます。

        // finalなので変更できません。
        // SYSTEM_NAME = "あいうえお";
        // コンパイルエラー:
        // final フィールド Sample.SYSTEM_NAME に値を割り当てられません。

        // SYSTEM_NAMEはStringクラスの参照型変数なので、
        // 参照が指し示す先のインスタンスの中身は
        // 変えうることができます。ただし、この場合は
        // Stringクラスなので、Stringクラスの性質として
        // 中身を変更できないため定数値として使用できます。
        // 逆に言えば、そういうクラスを使用すべきということです。
    }

    // static finalではなく、逆のfinal staticでも同じです。
    final static int MAX = 300;
}
// Sample.java
public class Sample
{
    /**
    *   static finalフィールド。
    *   アクセス修飾子は付けていませんが、通常、
    *   クラス内でのみ使用するときはprivateフィールド、
    *   他のクラスから使う時にはpublicフィールドにします。
    *   finalで定数値化されているので、publicでも問題
    *   ありません。ただ、publicフィールドの場合には
    *   定数値を入れる専用のクラスを作り、その中にまとめた方が
    *   いいでしょう。
    */
    static final String SYSTEM_NAME = "JavaA2Z";
    
    public static void main( String[] args )
    {
        // 定数値SYSTEM_NAMEを使用します。
        System.out.println( SYSTEM_NAME );
        // JavaA2Z
        // staticなのでstaticメソッドからも
        // 普通のメソッドからも使えます。

        // finalなので変更できません。
        // SYSTEM_NAME = "あいうえお";
        // コンパイルエラー:
        // final フィールド Sample.SYSTEM_NAME に値を割り当てられません。

        // SYSTEM_NAMEはStringクラスの参照型変数なので、
        // 参照が指し示す先のインスタンスの中身は
        // 変えうることができます。ただし、この場合は
        // Stringクラスなので、Stringクラスの性質として
        // 中身を変更できないため定数値として使用できます。
        // 逆に言えば、そういうクラスを使用すべきということです。
    }

    // static finalではなく、逆のfinal staticでも同じです。
    final static int MAX = 300;
}

この単語を含むページ

「みだし」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/05/02
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。