null の参照でメソッドを呼ぶ
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
Box box = null;
System.out.println("before");
box.show();
}
}
class Box {
void show() {
System.out.println("box");
}
}
- A
beforeと出力された後、例外が発生する - B
beforeとboxが出力される - C コンパイルエラーになる
- D すぐに例外が発生して何も出力されない
正解と解説を見る
正解: A
- A: "before" を出力した後、null の box でメソッドを呼んで NullPointerException が発生します。
- B: box は null なので show() は呼べません。
- C: null かどうかは実行時に決まるので、コンパイルはできます。
- D: 1行目の println は先に実行されるので、"before" は出力されます。
ポイント
- null はどのオブジェクトも指していない状態です。null でインスタンスメソッドを呼ぶと NullPointerException です。
「Java クラスの定義とインスタンス化とオブジェクトのライフサイクル」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)