• ベストアンサー

文字列の比較

いつも参考にさせて頂いています。 基本的なことなのですが、宜しくお願いします。 たとえば文字列"str"の空チェックをするとします。 -------------------以下参考ソース String str = "test"; 1. public static String isBlank(String str) { if(str == null || str.equals("")) { return true; } return false; } 2. public static String isBlank(String str) { if(str == null || str.length = 0) { return true; } return false; } ■1と2の違いって何かありますでしょうか? ■空チェックなら1と2のどちらを使うべきでしょうか? 以上宜しくお願いします。

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

  • ベストアンサー
  • i2719
  • ベストアンサー率35% (11/31)
回答No.3

str == null || str.length() == 0 私なら、毎度上記のように書きますね。 条件が反対の時は以下のように書きます。 str != null && str.length() > 0

その他の回答 (2)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.2

>isNull isBlank 両方は作りません。 >普通は作るもんなんでしょうか? 普通はどちらも作らないということが言いたかったのです。 str.equals("") と str.length == 0 の違いはさて置き、明確に「意味」がわかるようにコードの状態を保つことが重要です。 コードのどこかに if ( !isBlank(myString) ) { ... } と書いてあったとして、ブロックの中が myString が未設定(null)の場合も実行されるとは誰も思わないし、いちいち isBlank() の実装を確認するのか?ということです。 myString が「未設定(null)あるいは空("")の場合」をセットで頻繁にチェックする必要があるならば、まずは設計がおかしいことを疑って下さい。通常、変数は null のまま長時間放っておかれるものではないと思います。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>■空チェックなら1と2のどちらを使うべきでしょうか? どちらも使うべきではないと思う。 変数 str に値がセットされていない(null)ことと、空の文字列がセットされている("")ことは意味が違うので、それに isBlank() と名前を付けるのは要らぬ誤解を招くでしょう。

pgBeginImo
質問者

お礼

早速の回答ありがとうございます。 私の説明不足でしたね。申し訳ないです。 空チェックは null も "" も含む場合としてることが前提です。 isNull isBlank 両方は作りません。 普通は作るもんなんでしょうか? もしよければそのこともふまえてご意見を頂けたらうれしいです。 宜しくお願いします それと訂正ですが、質問欄で提示しているソースのメソッド(isBlank)の戻り値は (正)boolean (誤)String です。宜しくお願いします。

関連するQ&A