akios @ ウィキ

4.12.5. 変数の初期値

最終更新:

akios

- view
管理者のみ編集可

4. 型と値と変数

4.1. 型と変数の種類

4.2. プリミティブ型と値

4.3. 参照型と値

4.4. 型変数

4.5. 引数付き型

4.6. 型の抹消

4.7. 具象可能型

4.8. 未加工型

4.9. 交差型

4.10. サブタイプ化

4.11. 型の使用箇所

4.12. 変数

4.12.1. プリミティブ型の変数

4.12.2. 参照型の変数

4.12.3. 変数の種類

4.12.4. final変数

4.12.5. 変数の初期値

プログラム内のどの変数もその値が使用される前に値を持たなくてはなりません。:
  • クラス変数やインスタンス変数や配列要素は作成された時(15.9.15.10.)にデフォルト値(default value)で初期化されます。
    • byte型のデフォルト値はゼロ、つまり(byte)0の値です。
    • short型のデフォルト値はゼロ、つまり(short)0の値です。
    • int型のデフォルト値はゼロ、つまり0です。
    • long型のデフォルト値はゼロ、つまり0Lです。
    • float型のデフォルト値は正のゼロ、つまり0.0fです。
    • double型のデフォルト値は正のゼロ、つまり0.0dです。
    • char型のデフォルト値はヌル文字、つまり'\u0000'です。
    • boolean型のデフォルト値はfalseです。
    • 全ての参照型のデフォルト値はnullです。
  • メソッド引数メソッドの呼び出しの対応する実引数の値でそれぞれ初期化されます。
  • コンストラクター引数メソッドの呼び出しの対応する実引数の値でそれぞれ初期化されます。
  • 例外引数は例外を表すスローされたオブジェクトで初期化されます(11.3.14.18.)。
  • 局所変数(14.4.14.14.)はそれが使用される前に、確実な代入のルールを使って検証することができる方法で、 初期化代入のいずれかで明示的に値を与える必要があります。

例4.12.5-1. 変数の初期値

class Point {
    static int npoints;
    int x, y;
    Point root;
}

class Test {
    public static void main(String[] args) {
        System.out.println("npoints=" + Point.npoints);
        Point p = new Point();
        System.out.println("p.x=" + p.x + ", p.y=" + p.y);
        System.out.println("p.root=" + p.root);
    }
}

このプログラムは以下を出力します。:

npoints=0
p.x=0, p.y=0
p.root=null

これはクラスPoint準備された場合に起こるnpointsのデフォルト初期化と、新たなPointが初期化された際に起こるxyrootのデフォルト初期化を表しています。ロード、リンク、クラスとインタフェースの初期化についての完全な記述や、新たなクラスインスタンスを作成するためのクラスの初期化の記述については12.を参照してください。

4.12.6. 型とクラスとインタフェース

目安箱バナー