文字列が空文字と同じか判断
java
1if(str.equals("")){ 2 ... 3} 4
文字列の長さが0か判断
java
1if(str.isEmpty()){ 2 ... 3}
よく使う処理なのでどちらが良いのかふと気になりました。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
- 可読性ではどちらも大差ないと思います。
equals("")
は空文字""
と一致というわかりやすい条件ですし、isEmpty()
も空文字、という意味でそのままです。
しかし、ひねくれた見方をすると、リテラルで打ち込まれた""
に実は見えない空白文字が入っているのではないか?という可能性はありそうです(どこかからコピペでもしない限りまずそんなこと起きないし、考える人もあまりいないでしょうが)。
- 内部の判定ロジックは、
isEmpty()
は文字列の長さが0かで判断しますが、equals("")
ではいったんObjectに変換された""
のinstanceofによる型チェック、そしてキャストが挟まり、そのあと文字列の長さチェックになるので、パフォーマンス面ではisEmpty()
に軍配が上がります。 - 判定対象の文字列がnullである可能性があるのならnullチェックが必要ですが、equalsならリテラルと変数を逆にした
"".equals(str)
という書き方でNullPointerExceptionを回避できます(Tomohiro12さんがご指摘済み、ヨーダ記法というようだ)。isEmpty()
でこの芸当はできません。
しかし、変数がnullになることを想定していないのであれば、nullである状態はバグなので、それを早く検知するために通常の書き方をするべきと思います。
以上の点を総合的に考えると、isEmpty()
なのかなと私は思います。
投稿2017/06/26 02:30
総合スコア20675
0
Java
1if("".equals(str)){ 2 ... 3}
少なくともこうあるべきです
出なければstrがnullの際NullPointerExceptionが発生します
また、StringUtils.isBlank()とisEmpty() は
Java
1 2StringUtils.isEmpty(null) = true 3StringUtils.isEmpty("") = true 4StringUtils.isEmpty(" ") = false 5 6StringUtils.isBlank(null) = true 7StringUtils.isBlank("") = true 8StringUtils.isBlank(" ") = true 9
結果が異なるため、注意してください
投稿2017/06/26 00:52
総合スコア112
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。