JavaA2Z

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

変数宣言

日本語 変数宣言
英語 variable declaration
ふりがな へんすうせんげん
フリガナ ヘンスウセンゲン

解説

変数を作成すること。

変数;」と書くことが「変数宣言」である。
たとえば「int i;」と書いた場合「int変数iを宣言した」と言う。 
このように書くことが、メモリ上にのサイズ分の領域を確保し、「この領域を変数として使用する」と「宣言」することになるので、「変数宣言」という。

変数宣言は、宣言箇所によって以下の2種類存在する。
 
ローカル変数
フィールド
 
ローカル変数の場合、変数宣言を「ローカル変数宣言」と言う。
フィールドの場合、変数宣言を「フィールド宣言」と言う。

また、上記2種類以外にも、以下の2箇所でも変数宣言をうことができる。
 
メソッド引数
catch例外パラメーター
 
ただし、この2つは厳密には変数宣言ではない。
メソッド引数は、引数の作成と同時に「初期化」をうことができない。
また、catch例外パラメーターは「初期化」「複数宣言」「Throwableクラスサブクラス以外の宣言」をう事ができない。
そのため変数宣言とは別物ではあるが、「を指定して変数を作る」という点では同じであるため、実際に使用する分には区別する必要はないだろう。
 
変数宣言は「修飾子 識別子;」という形式で記述する。

修飾子」は変数の性質を決定する予約語を指定する。
ローカル変数finalのみ使用可能。
フィールド変数の場合は「フィールド修飾子」が使用可能。
修飾子は省略可能。ローカル変数の場合には省略することが多い。フィールドの場合にはアクセス修飾子のみ付けることが多い。
 
」は変数を指定する。
このによって、変数に入れられる値の種類が決まる。逆に言えば、定義された値以外は変数に入れられない。
には「プリミティブ型」や「クラス」を指定する。
また、配列にしたい場合には、名の後ろに「[]」を付ける。
クラス配列を指定した場合には、変数参照変数となる。
 
識別子」が、変数名である。
この変数名を使用して、値の格納や演算メソッド呼び出し等をう。
配列の場合、「」ではなく「識別子」に「[]」を付けることで配列宣言うこともできる。
複数の変数を同時に宣言する場合には「識別子」を「識別子1, 識別子2」というように、カンマで変数名を区切る。
  
識別子」の箇所で、変数の「初期化」をうことができる。
識別子 = 初期値;」という形式で、変数初期化する。
上記のカンマによる複数宣言った場合には、それぞれの変数に対して初期化う必要があるため注意すること。つまり「int i1, i2 = 100;」と記述した場合には変数i2しか初期化されない。

変数は、使用できる範囲と「寿命」を決定する「スコープ」が存在する。
スコープは、ローカル変数の場合には宣言をしたブロックによって決まる。
フィールドの場合にはアクセス修飾子によって決まる。
 
変数は、あくまで「値を入れておくための入れ物」である。
クラス配列の場合、インスタンスを作成しなければ使用できないため注意すること。
クラス配列にとっては、変数参照値を格納するための変数でしかない。
 
以上、詳細については各項目を参照

参考サイト

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

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

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

// Sample.java
public class Sample
{
    // フィールド変数宣言の例。
    // フィールドを宣言します。
//  修飾子  型 識別子 初期化
    // ↓   ↓   ↓    ↓
    private int value = 400;

    public static void main( String[] args )
    {
        // ローカル変数宣言の例。
        // ローカル変数を宣言します。
    //  型 識別子
    //  ↓   ↓
        int  i;

        // こうすることで、メモリ上にintサイズの領域が確保され、
        // iという変数名を通して、その領域に整数値を書き込むことが
        // 可能になります。
        // つまり「変数i」を作ったわけです。

        // 変数iに値を代入します。
        i = 100;
        // それを出力します。
        System.out.println( i );
        // 100

        // 変数は、宣言と同時に初期化することもできます。
        //        ↓整数値200で初期化します。
        int iInit = 200;
        System.out.println( iInit );
        // 200

        // 複数の変数を同時に宣言したい場合には、識別子をカンマで
        // 区切ります。
        //         ↓i2だけ初期化します。
        int i1, i2 = 300, i3;

        // カンマを使って複数の変数を同時に宣言した場合、
        // 初期化はそれぞれ個別に行わなければなりません。
        // 上記の例では変数i2しか初期化されていませんので、
        // 変数i1に値を入れず使おうとするとコンパイルエラーに
        // なります。
        // ※コンパイルエラーの例
        // System.out.println( i1 );
        // ※エラーメッセージ
        // ローカル変数 i1 が初期化されていない可能性があります。
        // ※コンパイルエラーの例ここまで

        // 変数i2は問題なく使えます。
        System.out.println( i2 );
        // 300

        // 変数i3は変数i1と同じく初期化されていません。
        // ※コンパイルエラーの例
        // System.out.println( i3 );
        // ※エラーメッセージ
        // ローカル変数 i3 が初期化されていない可能性があります。
        // ※コンパイルエラーの例ここまで

        // 配列を作る時には、以下のどちらかの方法で宣言することが
        // できます。
        int[] ints1;
        int ints2[];
        // どちらも同じですが、一般的には「int[]」が使用されています。

        // 以上、フィールドも同様です。
    }

    // メソッドの引数は変数宣言と同様に変数を作ります。
    // ただし厳密には変数宣言とは異なります。
    //            これがメソッドの引数です。
    //                      ↓
    public void output( int i )
    {
        // catchの例外パラメーターも変数宣言と同様に変数を作ります。
        // ただし厳密には変数宣言とは異なります。
        try
        {
            // NullPointerExceptionを投げます。
            throw new NullPointerException();
        }//                         ↓これが例外パラメータです。
        catch( NullPointerException e )
        {
            e.printStackTrace();
            // java.lang.NullPointerException
            //     at Sample.main(Sample.java:9)
            // このように、投げられた例外を止めます。
        }
    }
}
// Sample.java
public class Sample
{
    // フィールド変数宣言の例。
    // フィールドを宣言します。
//  修飾子  型 識別子 初期化
    // ↓   ↓   ↓    ↓
    private int value = 400;

    public static void main( String[] args )
    {
        // ローカル変数宣言の例。
        // ローカル変数を宣言します。
    //  型 識別子
    //  ↓   ↓
        int  i;

        // こうすることで、メモリ上にintサイズの領域が確保され、
        // iという変数名を通して、その領域に整数値を書き込むことが
        // 可能になります。
        // つまり「変数i」を作ったわけです。

        // 変数iに値を代入します。
        i = 100;
        // それを出力します。
        System.out.println( i );
        // 100

        // 変数は、宣言と同時に初期化することもできます。
        //        ↓整数値200で初期化します。
        int iInit = 200;
        System.out.println( iInit );
        // 200

        // 複数の変数を同時に宣言したい場合には、識別子をカンマで
        // 区切ります。
        //         ↓i2だけ初期化します。
        int i1, i2 = 300, i3;

        // カンマを使って複数の変数を同時に宣言した場合、
        // 初期化はそれぞれ個別に行わなければなりません。
        // 上記の例では変数i2しか初期化されていませんので、
        // 変数i1に値を入れず使おうとするとコンパイルエラーに
        // なります。
        // ※コンパイルエラーの例
        // System.out.println( i1 );
        // ※エラーメッセージ
        // ローカル変数 i1 が初期化されていない可能性があります。
        // ※コンパイルエラーの例ここまで

        // 変数i2は問題なく使えます。
        System.out.println( i2 );
        // 300

        // 変数i3は変数i1と同じく初期化されていません。
        // ※コンパイルエラーの例
        // System.out.println( i3 );
        // ※エラーメッセージ
        // ローカル変数 i3 が初期化されていない可能性があります。
        // ※コンパイルエラーの例ここまで

        // 配列を作る時には、以下のどちらかの方法で宣言することが
        // できます。
        int[] ints1;
        int ints2[];
        // どちらも同じですが、一般的には「int[]」が使用されています。

        // 以上、フィールドも同様です。
    }

    // メソッドの引数は変数宣言と同様に変数を作ります。
    // ただし厳密には変数宣言とは異なります。
    //            これがメソッドの引数です。
    //                      ↓
    public void output( int i )
    {
        // catchの例外パラメーターも変数宣言と同様に変数を作ります。
        // ただし厳密には変数宣言とは異なります。
        try
        {
            // NullPointerExceptionを投げます。
            throw new NullPointerException();
        }//                         ↓これが例外パラメータです。
        catch( NullPointerException e )
        {
            e.printStackTrace();
            // java.lang.NullPointerException
            //     at Sample.main(Sample.java:9)
            // このように、投げられた例外を止めます。
        }
    }
}

この単語を含むページ

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