すべてのカテゴリ » インターネット・パソコン » 技術・プログラミング

質問

終了

Javaのプログラムで質問です。

String型のstrが"abc"と等しいか判定する場合、
if (str.equals("abc")) {
}
としていました。
ところが先日、
if ("abc".equals(str)) {
}
としているソースを見かけました。

何となく気持ちが悪いのですが、どうしてこうしているのでしょうか?

  • 質問者:Sooda! ちゃん
  • 質問日時:2008-11-17 20:19:35
  • 0

これは、NullPointerExceptionの発生を避けるためです。

例えば、以下のようなソースを考えます。
 String str = null;
 if (str.equals("abc")) {
 }
この場合、strがnullなのでstr.equals("abc")でNullPointerExceptionが発生してしまいます。

こういった問題に対処するには
 String str = null;
 if ((str != null) && (str.equals("abc"))) {
 }
の様に、先にnullチェックを行う必要があります。

ですが、いちいちnullチェックを入れるのは面倒です。
そこで、
 String str = null;
 if ("abc".equals(str)) {
 }
と実装します。
"abc"は絶対にnullではないので、NullPointerExceptionは発生しません。
またstrがnullだった場合でも、"abc".equals(str) == falseとなるので仕様を満たします。

nullチェックを行わなくてもNullPointerExceptionを回避する、ちょっとした小技ですね。

  • 回答者:Sooda! くん (質問から5分後)
  • 0
この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。
お礼コメント

なるほど!nullチェック無しでnullエラーを回避できるんですね!
これは良いことを教えてもらいました。
次からは"abc".equals(str))の方を使っていこうと思います。
どうもありがとうございました。

関連する質問・相談

Sooda!からのお知らせ

一覧を見る