アプリ版:「スタンプのみでお礼する」機能のリリースについて

String[];
s.length;

これをコンパイルするとコンパイルエラーになりますが、なぜNullPointerExceptionではないのですか?

通常オブジェクトが生成されていないものに対し、メソッド、フィールドの呼び出しを行うとNullPointerExceptionになるはずなのですが…。

配列のlengthがメソッドでもフィールドでもないという事は聞いたことがありますが、これはいったい何なのですか?

A 回答 (4件)

> なぜNullPointerExceptionではないのですか?



を、次のどちらの意味で使ってますか?

(1) このプログラムは コンパイル時に「NullPointerException」というエラーになるはず。
ところで、NullPointerException ではなく別のエラーになってしまう

(2) このプログラムは正常にコンパイルできて、実行時に「NullPointerException」が発生するはず。
ところが、コンパイル自体がエラーでできない。


(1) の場合
NullPointerException は 実行時に発生する例外です。
コンパイル時には発生しません。
// コンパイラのバグ等で、異常事態が発生して.. という可能性は0ではありませんが、そんな特殊な例は無視していいです。


(2)の場合
この例では、文法間違いがあり、正常にコンパイルできません。
それが理解できないのなら、Javaの文法を基礎から勉強しましょう。
    • good
    • 0

そもそも。

変数の宣言がない。初期化がなされていない。

それらを満たした上でなら、NullPointerExceptionになります。
    • good
    • 0

コンパイラにバグがない限り, NullPointerException が「コンパイルエラー」で出ることはそもそもあり得ないんじゃ

ないかなぁ....
    • good
    • 0

>これをコンパイルするとコンパイルエラーになりますが、なぜNullPointerExceptionではないのですか?



その理由はエラーメッセージとして書かれているはずですけど、
エラーメッセージは読まれていますか?

>String[];

これ、何をさせようとしてるのか説明お願いします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!