トップ 一覧 検索 ヘルプ RSS ログイン

技術的雑談-リテラル文字列の比較の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!技術的雑談-リテラル文字列の比較

!!環境
JDK1.4.2、1.5 ってか、Java全般?

!!現象
String型の変数aaaaに入っている文字列が"abcd"と同じか調べたいのだが、変数aaaaがnullである場合がありえる。

aaaa=nullの時に
 if(aaaa.equals("abcd") {
     System.out.println("aaaaはabcdだよ。");
 }
とか実行すると、

 java.lang.NullPointerException
 	at com.himajin2001.TestApplication.main(TestApplication.java:33)

って怒られます。
かといって、一々文字列変数のチェックをするたびにnullチェックをするのは無粋ですよね?

!!対処
実は、上記のif分を
 if("abcd".equals(aaaa) {
と書き直すだけでnullチェックをしないで済みます!!

実際、aaaaがnullでも正常に(NullPointerExceptionが出ずに)if文が通ります。
なーんか文の意味的には納得行かない気もしますが、これがお約束なみたいです。
リテラルはnullってことありえませんからね。

!!履歴
2005/2/29 -- 初版

[[技術的雑談]]へ戻る

!!突っ込み
{{comment}}

[[技術的雑談]]へ戻る

{{trackback}}

[[技術的雑談]]へ戻る