- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!!技術的雑談-リテラル文字列の比較
!!環境
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}}
[[技術的雑談]]へ戻る