【Java】contentEqualsを使ってStringとStringBuilderとで比較する!
「String」インスタンスと「StringBuilder」インスタンスを比較するには、StringクラスのcontentEqualsメソッドを使用します。
contentEqualsメソッドは文字列を検索して、指定された文字列またはStringBuilderにまったく同じ文字シーケンスが含まれているかどうかを確認するメソッドになります。
contentEqualsメソッド以外にも文字列を比較するメソッドはありますが、比較する値によって返す値が変わってきます。
そのため、string型の文字列とStringBuilderでインスタンス化した文字列とを比較したい場合にはcontentEqualsメソッドを使用した方が良いです。
今回はcontentEqualsメソッドを使って以下の場合でStringとStringBuilderとで比較を行います。
⚫︎ contentEqualsメソッドを使ってStringとStringBuilderとで比較する場合
⚫︎ equalsメソッドを使ってStringとStringBuilderとで比較する場合
目次
contentEqualsメソッドとは
contentEqualsメソッドとは、文字列を検索して、指定された文字列またはStringBuilderにまったく同じ文字シーケンスが含まれているかどうかを確認するメソッドになります。
contentEqualsメソッドの書き方
contentEqualsメソッドの構文は下記となります。
1 |
文字列.contentEquals(StringBufferのインスタンス); |
contentEqualsにStringBufferのインスタンスを指定することで文字列とStringBufferにまったく同じ文字が含まれているかどうかを確認することができます。
文字が存在する場合はtrueを返し、存在しない場合はfalseを返します。
StringBuilderとは
StringBuilderは、Stringクラス同様、文字列を扱うクラスになります。
文字を持たず、容量が16文字である文字列を作成することができます。
StringBuilderの書き方
StringBuilderの構文は下記となります。
1 |
StringBuilder 変数名 = new StringBuilder(); |
StringBuilder型のインスタンスを作成します。
そうすることで、文字列を作成することができます。
StringとStringBuilderとで比較したサンプルコード
StringとStringBuilderとで比較したサンプルコードを紹介します。
contentEqualsメソッドで比較する場合
例
1 2 3 4 5 6 7 8 9 10 11 12 |
// StringとstringBuilderとの比較を行う public class Main { public static void main(String[] args) throws Exception { String str1 = "あいうえお"; StringBuilder strbuilder1 = new StringBuilder(str1); //contentEqualsメソッドによる比較 System.out.print("contentEqualsメソッドでの比較:"); System.out.println(str1.contentEquals(strbuilder1) ?"等しい":"等しくない"); } } |
出力結果
contentEqualsメソッドでの比較:等しい
contentEqualsメソッドで比較すると、同じもじであることからtrueを返します。
equalsメソッドで比較する場合
例
1 2 3 4 5 6 7 8 9 10 11 12 |
// StringとstringBuilderとの比較を行う public class Main { public static void main(String[] args) throws Exception { String str2 = "あいうえお"; StringBuilder strbuilder2 = new StringBuilder(str2); // equalsメソッドによる比較 System.out.print("equalsメソッドでの比較: "); System.out.println(str2.equals(strbuilder2)?"等しい":"等しくない"); } } |
出力結果
equalsメソッドでの比較: 等しくない
equalsメソッドで比較すると同じ文字ですが、falseを返します。
今回のポイント
比較する際にはcontentEqualsメソッドを使用する
「String」インスタンスと「StringBuilder」インスタンスを比較するには、contentEqualsメソッドを使用する
⚫︎ contentEqualsメソッドで「String」インスタンスと「StringBuilder」インスタンスが保持している文字列が等しいかどうかを調べる
⚫︎ equalsメソッドでは「String」インスタンスと「StringBuilder」インスタンスとの比較には使えない
(判定対象が「String」インスタンス以外の場合は必ず「false」を戻すため)
補足
SringBuilder同士は直接、equalsメソッドで比較できない
equalsメソッドでインスタンス同士の比較を行うことはできません。
なぜなら「StringBuilder」クラスは「equals」メソッドをオーバーライドしていないからです。
「StringBuilder」インスタンス同士で比較したい場合は、どちらか一方を「String」インスタンスに変換してから比較します。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// StringBuilder同士で比較を行う public class Main { public static void main(String[] args) throws Exception { StringBuilder strBuilder1 = new StringBuilder("あかさたな"); StringBuilder strBuilder2 = new StringBuilder("あかさたな"); // equalsメソッドによる比較 System.out.print("equalsメソッドでの比較: "); System.out.println(strBuilder1.equals(strBuilder2) ? "等しい":"等しくない"); //Stringに変換してからのcontentEqualsメソッドによる比較 System.out.print("Stringに変換してからの比較:"); System.out.println(strBuilder1.toString().contentEquals(strBuilder2) ?"等しい":"等しくない"); } } |
出力結果
equalsメソッドでの比較: 等しくない
Stringに変換してからの比較:等しい
関連記事
文字列を比較するequalsメソッドについてはこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。