LoginSignup
0
0

More than 3 years have passed since last update.

Java問題「言語仕様」初期化子(2)

Last updated at Posted at 2020-09-19

次のプログラムをコンパイル・実行するとどうなるか?


public class Knock013 {
    private static Object n;
    private static final Object HOGE = n.toString();
    public static void main(String[] arguments) {
        System.out.println("HOGE is " + HOGE);
    }
}

解答
変数の初期化がされていない。
nはnullの状態なので、toString()でNullPointerExceptionが発生する


private static final Object HOGE = n.toString();

final修飾子とは

final修飾子を指定した変数は、基本的に規定値など一度値を設定したら変更する必要がないときい使います。

変数は基本的に値を自由に変更できますが、一度値を設定したら変更されない変数のことを「定数」と呼びます。
クラス定数を指定する場合は、変数の宣言の頭にstatic finalを書きます。

  • 変数へのfinal:変数へ値の再代入をできなくする(=変数へ値を代入できるのが最初の1回のみになる)
  • クラスへのfinal:クラスを継承できなくする
  • メソッドへのfinal:メソッドをオーバーライドできなくする
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0