【Java】equals/compareTo/==演算子を使って文字列(String)の比較を行う!
文字列(String)の比較を行うにはequalsメソッドを使用します。
比較した際に一致した場合はtrueを返し、異なった場合はfalseを返します。
equalsとは別にcompareToメソッドを使って文字列の比較を行うこともできますが、返り値がequalsと異なるので注意が必要です。
また、文字列が同じかどうかを判断する際に「==」演算子も思い浮かぶと思いますので、「==」を使って文字列の比較ができるかどうか調べます。
今回はequals、compareTo、==演算子を使って文字列の比較を行ってみます。
目次
equalsメソッドとは
equalsメソッドとは、文字列の比較を行うことができます。
一致するときにtrueを返し、一致しない場合にはfalseを返すようになります。
equalsメソッドの書き方
equalsメソッドの構文は下記となります。
1 |
文字列1.equals(文字列2) |
()の引数の文字列2を指定することで、文字列1と文字列2を比較するようになります。
比較した場合、文字列1と文字列2が一致するならtrue、違うならfalseを返します。
compareToメソッドとは
ecompareToメソッドも文字列を比較するために使います。
しかし、equalsメソッドと比べて、compareToメソッドは比較したのどちらが大きいか、または同じかを比較し、一致する場合は「0」を、異なる場合は「0以外」を返します。
compareToメソッドの書き方
compareToメソッドの構文は下記となります。
1 |
文字列1.compareTo(文字列2) |
()の引数の文字列2を指定することで、文字列1と文字列2を比較するようになります。
比較した場合、一致する場合は「0」を、異なる場合は「0以外」を返します。
文字列を比較するサンプルコード
equals、compareTo、==演算子を使って文字列を比較するサンプルコードを見てみます。
equalsメソッドで比較する場合
equalsメソッドを使って文字列の比較を行ってみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
// 文字列を比較する public class Main { public static void main(String[] args) throws Exception { // 比較対象の文字列を用意 //それぞれ別インスタンスで、strCのみ内容が異なる String strA = "がぎぐげご"; char[] chArray = {'が', 'ぎ', 'ぐ', 'げ', 'ご'}; String strB = new String(chArray); String strC = new String("がぎぐげこ"); // equalsメソッドによる比較 System.out.println("equalsメソッドでの比較"); System.out.println( "strAとstrBは" + (strA.equals(strB) ? "等しい":"等しくない")); System.out.println( "strAとstrCは" + (strA.equals(strC) ? "等しい":"等しくない")); } } |
出力結果
equalsメソッドでの比較
strAとstrBは等しい
strAとstrCは等しくない
compareToメソッドで比較する場合
compareToメソッドを使って文字列の比較を行ってみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// 文字列を比較する public class Main { public static void main(String[] args) throws Exception { // 比較対象の文字列を用意 //それぞれ別インスタンスで、strCのみ内容が異なる String strA = "がぎぐげご"; char[] chArray = {'が', 'ぎ', 'ぐ', 'げ', 'ご'}; String strB = new String(chArray); String strC = new String("がぎぐげこ"); // compareToメソッドによる比較 System.out.println("compareToメソッドでの比較"); System.out.println( "strAとstrBは" + (strA.compareTo(strB) == 0 ? "等しい":"等しくない")); System.out.println( "strAとstrCは" + (strA.compareTo(strC) == 0 ? "等しい":"等しくない")); } } |
出力結果
compareToメソッドでの比較
strAとstrBは等しい
strAとstrCは等しくない
==演算子で比較する場合
==演算子を使ってを使って文字列の比較を行ってみます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// 文字列を比較する public class Main { public static void main(String[] args) throws Exception { // 比較対象の文字列を用意 //それぞれ別インスタンスで、strCのみ内容が異なる String strA = "がぎぐげご"; char[] chArray = {'が', 'ぎ', 'ぐ', 'げ', 'ご'}; String strB = new String(chArray); String strC = new String("がぎぐげこ"); // ==演算子による比較 System.out.println("==演算子での比較"); System.out.println( "strAとstrBは" + (strA == strB ? "等しい":"等しくない")); System.out.println( "strAとstrCは" + (strA == strC ? "等しい":"等しくない")); } } |
出力結果
==演算子での比較
strAとstrBは等しくない
strAとstrCは等しくない
今回のポイント
equaisメソッドで文字列を比較
文字列を比較するにはStringクラスのequalsメソッドを使用する
• Stringクラスのequalsメソッドで2つの文字列が等しいかどうかを判定し、等しいなら「true」を返し、そうでないなら「false」を返す
• StringクラスのcompareToメソッドも2つの文字列が等しいかどうかを判定するが、2つの文字列の内容が一致する場合に「0」を、一致しない場合は「0以外」を戻す
• 「==」演算子では内容が一致しているかどうかではなく、同じインスタンスかどうかを判定する
関連記事
StringとStrigBuilderとで比較する方法についてはこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。