• ベストアンサー

配列のNullPointerException

String[]; s.length; これをコンパイルするとコンパイルエラーになりますが、なぜNullPointerExceptionではないのですか? 通常オブジェクトが生成されていないものに対し、メソッド、フィールドの呼び出しを行うとNullPointerExceptionになるはずなのですが…。 配列のlengthがメソッドでもフィールドでもないという事は聞いたことがありますが、これはいったい何なのですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

> なぜNullPointerExceptionではないのですか? を、次のどちらの意味で使ってますか? (1) このプログラムは コンパイル時に「NullPointerException」というエラーになるはず。 ところで、NullPointerException ではなく別のエラーになってしまう (2) このプログラムは正常にコンパイルできて、実行時に「NullPointerException」が発生するはず。 ところが、コンパイル自体がエラーでできない。 (1) の場合 NullPointerException は 実行時に発生する例外です。 コンパイル時には発生しません。 // コンパイラのバグ等で、異常事態が発生して.. という可能性は0ではありませんが、そんな特殊な例は無視していいです。 (2)の場合 この例では、文法間違いがあり、正常にコンパイルできません。 それが理解できないのなら、Javaの文法を基礎から勉強しましょう。

その他の回答 (3)

  • teketon
  • ベストアンサー率65% (141/215)
回答No.3

そもそも。変数の宣言がない。初期化がなされていない。 それらを満たした上でなら、NullPointerExceptionになります。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

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

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>これをコンパイルするとコンパイルエラーになりますが、なぜNullPointerExceptionではないのですか? その理由はエラーメッセージとして書かれているはずですけど、 エラーメッセージは読まれていますか? >String[]; これ、何をさせようとしてるのか説明お願いします。

関連するQ&A