JavaA2Z

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

final変数

日本語 最終変数
英語 final variable
ふりがな ふぁいなるへんすう
フリガナ ファイナルヘンスウ

解説

値を変更できない変数
finalで修飾された変数。「final 変数;」のように、変数宣言修飾子finalを使用した変数
 
final変数は、変数に格納されている値を変更できない。つまり「定数」とすることができる。
ただし、変更できないのは格納されている「値」のみである。そのため、参照変数の場合、変更できないのは参照値のみで、参照先のインスタンスが格納する値はいくらでも変更できるため注意が必要。そのため、クラス及び配列の場合にはあまり効果がないと考えた方がいい。
 
ほとんどの場合はstatic finalフィールド宣言時に使用する。

参考サイト

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

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

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

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // final変数を作ります。
        final int i = 100;
        // このiの値は変更できません。
        // i = 200;
        // コンパイルエラー:
        // The final local variable i cannot be assigned. It must be blank and not using a compound assignment

        // final変数を初期化しないで宣言すれば、
        // 最初の代入時は「初期化」と見なされて
        // 値を変更することができます。
        final int iNotInit;
        iNotInit = 300;
        // でも二度目は不可。
        // iNotInit = 400;
        // コンパイルエラー:
        // final のローカル変数 iNotInit はすでに割り当てられています。

        // finalで変更できないのは、変数に格納されている
        // 「値」です。
        // 参照型変数の場合、変更できないのは「参照値」のみで、
        // 参照先のインスタンスの中身は変更し放題です。
        final StringBuffer strbuf = new StringBuffer();
        strbuf.append( "あいうえお" );
        strbuf.append( "かきくけこ" );
        // このように変更し放題ですが、参照値は変えられません。
        // strbuf = new StringBuffer();
        // コンパイルエラー:
        // The final local variable i cannot be assigned. It must be blank and not using a compound assignment
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // final変数を作ります。
        final int i = 100;
        // このiの値は変更できません。
        // i = 200;
        // コンパイルエラー:
        // The final local variable i cannot be assigned. It must be blank and not using a compound assignment

        // final変数を初期化しないで宣言すれば、
        // 最初の代入時は「初期化」と見なされて
        // 値を変更することができます。
        final int iNotInit;
        iNotInit = 300;
        // でも二度目は不可。
        // iNotInit = 400;
        // コンパイルエラー:
        // final のローカル変数 iNotInit はすでに割り当てられています。

        // finalで変更できないのは、変数に格納されている
        // 「値」です。
        // 参照型変数の場合、変更できないのは「参照値」のみで、
        // 参照先のインスタンスの中身は変更し放題です。
        final StringBuffer strbuf = new StringBuffer();
        strbuf.append( "あいうえお" );
        strbuf.append( "かきくけこ" );
        // このように変更し放題ですが、参照値は変えられません。
        // strbuf = new StringBuffer();
        // コンパイルエラー:
        // The final local variable i cannot be assigned. It must be blank and not using a compound assignment
    }
}

この単語を含むページ

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

「サンプルプログラムとか」に含まれているページ

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