技術的雑談-リテラル文字列の比較
環境
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 -- 初版
技術的雑談へ戻る