Java

javaで文字列比較はどれを使うべきか

javaで文字列比較を行う場合はequalsを使う

まぁ当然のことなんですが、予測変換で見てたときにいくつか比較にも種類があったのでまとめてみます

String.equals(targetStrirng)

こいつは文字列シーケンスとオブジェクトの両方を比較します
なので文字列が同じであっても対象がStringオブジェクトでなければfalseを返します

String.contentEquals(targetString) //true
String.contentEquals(targetStringBuilder) //true
String.contentEquals(targetStringBuffer) //true
String.contentEquals(targetCharSequence) //true

こいつは文字列シーケンスのみを比較します。
オブジェクトは見ていないので、String以外でも文字列シーケンスが同じであればtrueを返します

String.contains(targetStrirng)

こいつは文字列シーケンスのみを比較します。
対象に引数の文字列シーケンスが含まれている場合trueを返します。

結局使い分けはどうしたらええんや

  • Stringのユーティリティを使用したいので、Stringオブジェクトを使っている。&完全一致で判断を行いたい
     → equals
  • 文字列オブジェクトを限定せずに使用したいので、メソッドの引数にCharSequenceを使用している
     → contentEquals
  • 対象の中に文字列が含まれているか確認したい。つまり中間一致検索。
     → contains