Javaで文字列を比較する方法:equals()とequalsIgnoreCase()の使い方を徹底解説
Javaにおいて、文字列(String)はテキストデータを格納するためのデータ型です。文字列を扱っていると、2つの文字列を比較したい場面に遭遇することがあります。
そんなときに役立つのが、Javaのequals()メソッドとequalsIgnoreCase()メソッドです。equals()は2つの文字列が等しいかどうかを確認するために使用され、equalsIgnoreCase()は大文字と小文字の違いを無視して2つの文字列が等しいかどうかを比較します。
この記事では、具体例を交えながら、Javaで文字列のequals()メソッドとequalsIgnoreCase()メソッドを使用する方法を解説します。読み終える頃には、これらのメソッドを使いこなして文字列を比較できるようになっているでしょう。
Javaにおける文字列(String)の基礎
文字列はテキストを格納するために使用され、英字、数字、記号、空白などを含むことができます。例えば、仕立て屋の顧客名や、仕入れ先の住所などが文字列として扱われます。
Javaでは、文字列は引用符(ダブルクォーテーション)で囲まれた一連の文字として宣言されます。以下はJavaの文字列の例です:
String favoriteCoffeeShop = "Central Perk";
この例では、favoriteCoffeeShopという変数を宣言し、値としてCentral Perkを代入しています。
Javaの文字列オブジェクトは不変(イミュータブル)です。つまり、一度作成された文字列は変更できず、別の文字列と比較するにはequals()メソッドを使用する必要があります。文字列の基本がわかったところで、次にequals()メソッドとequalsIgnoreCase()メソッドについて詳しく見ていきましょう。
Java String equals()メソッドとは
Javaの文字列equals()メソッドは、オブジェクトを比較し、2つの文字列の内容が等しいかどうかを確認するために使用されます。
equals()メソッドは1つの引数を受け取ります。それは、比較対象となるもう一方の文字列です。構文は以下の通りです:
stringName.equals(string2Name);
各要素の意味は以下の通りです:
- stringName:比較元となる元の文字列の名前
- equals():stringNameとstring2Nameを比較するためのメソッド
- string2Name:stringNameと比較したい文字列
equals()メソッドは、文字列が等しいかどうかに応じてboolean値を返します。2つの文字列が等しければtrueが返され、そうでなければfalseが返されます。
なお、equals()メソッドは大文字と小文字を区別します。そのため、2つの文字列が同じ文字を含んでいても、大文字・小文字が異なる場合はfalseが返される点に注意してください。
Java String equals()の使用例
ここで、ホテルを経営しており、チェックイン業務を効率化するプログラムを作成しているとしましょう。顧客がチェックインする際には、名前と予約番号を提示する必要があります。顧客の身元を確認するために、顧客が提示した予約番号を、システムに保存されている予約番号と照合します。
以下のコードを使用して、保存されている予約番号と顧客が提示した予約番号を比較できます:
class Main {
public static void main(String args[]) {
String onFileBookingReference = "#ST2920198";
String customerGivenBookingReference = "#ST2920198";
boolean areEqual = onFileBookingReference.equals(customerGivenBookingReference);
if (areEqual == true) {
System.out.println("This booking is confirmed.");
} else {
System.out.println("The booking reference provided does not match the one on-file.");
}
}
}
このコードを実行すると、以下の出力が得られます:
This booking is confirmed.
コードの内容を順番に見ていきましょう:
onFileBookingReferenceという変数を宣言し、顧客の名前に紐づく予約番号を格納します。customerGivenBookingReferenceという変数を宣言し、チェックインデスクで顧客が提示した予約番号を格納します。equals()メソッドを使用して、onFileBookingReferenceとcustomerGivenBookingReferenceが等しいかどうかを確認し、その結果をareEqual変数に代入します。if文を使用して、areEqualがtrueかどうかを判定します。- areEqualがtrueの場合、「This booking is confirmed.」というメッセージがコンソールに出力されます。
- areEqualがfalseの場合、「The booking reference provided does not match the one on-file.」というメッセージがコンソールに出力されます。
この例では、顧客が正しい予約番号を提示したため、プログラムは予約の確認に成功しました。
Java String equalsIgnoreCase()メソッドとは
文字列のequalsIgnoreCase()メソッドは、大文字と小文字の違いを無視して2つの文字列を比較するために使用されます。equalsIgnoreCase()はequals()メソッドと同じ構文を使用します:
stringName.equalsIgnoreCase(string2Name);
それでは、このメソッドの実際の動作を示す例を見ていきましょう。
今度は、顧客の名前が予約番号に紐づく名前と一致するかどうかを確認するプログラムを作成するとします。この確認では大文字・小文字を区別しないようにすることで、表記のゆれによってチェックイン係が予約を見つけられなくなる事態を防ぎます。
以下のコードを使用して、顧客の名前と予約番号に紐づく名前を比較できます:
class Main {
public static void main(String args[]) {
String onFileName = "Gregory Lamont";
String customerName = "gregory lamont";
boolean areEqual = onFileName.equalsIgnoreCase(customerName);
if (areEqual == true) {
System.out.println("This booking is confirmed.");
} else {
System.out.println("The customer name provided does not match the one on-file.");
}
}
}
このコードを実行すると、以下の出力が得られます:
This booking is confirmed.
システムに保存されている顧客名はGregory Lamontですが、チェックイン係が入力した顧客名はgregory lamontでした。もしequals()メソッドを使用していた場合、大文字・小文字が異なるため、これらの文字列は同じとはみなされませんでした。
しかし、この例ではequalsIgnoreCase()メソッドを使用したため、文字列内の文字の大文字・小文字の違いは無視され、2つの名前は一致と判断されました。
まとめ
文字列のequals()メソッドは、2つの文字列が完全に一致しているかどうかを確認するために使用されます。一方、equalsIgnoreCase()メソッドは、大文字・小文字の違いに関係なく、2つの文字列が等しいかどうかを確認するために使用されます。
この記事では、2つの実例を挙げながら、Javaで文字列のequals()メソッドとequalsIgnoreCase()メソッドを使用する方法を解説しました。これで、あなたもプロのようにequals()とequalsIgnoreCase()を使ってJavaで文字列を比較できるようになったはずです!
-
Java 9のJShellで文字列を操作する方法を徹底解説
JShellは、Java 9で初めて導入されたJava公式のREPL(Read-Evaluate-Print Loop)ツールです。コマンドラインプロンプト上でステートメント、簡単なプログラム、ループ、式などの小さなロジックをその場で入力し、即座に実行・評価できるのが特徴です。ソースファイルの作成やコンパイルが不要なため、APIの動作確認やJavaの学習に非常に便利な環境を提供します。 文字列の実装例 以下の例では、Stringクラスがあらかじめ提供している定義済みメソッドを使用して、JShell上で文字列を操作しています。 jshell> String str = {abcd}; st
-
JavaのStringIndexOutOfBoundsExceptionとは?発生原因と対処法をわかりやすく解説
StringIndexOutOfBoundsExceptionとはJavaにおいて、文字列(String)は一連の文字を格納するために使用され、オブジェクトとして扱われます。文字列は、java.langパッケージに含まれるStringクラスによって表現されます。文字列の作成方法は主に2つあります。1つは他のオブジェクトと同様にnewキーワードを使用する方法、もう1つはプリミティブ型のようにリテラルを直接代入する方法です。String stringObject = new String(Hello how are you); String stringLiteral = Welcome to T