文字列比較
CoddyのJavaジャーニー「基礎」セクションの一部。レッスン 70/73。
Javaでは、文字列の比較は整数や文字などのプリミティブ型のデータを比較するほど単純ではありません。文字列はオブジェクトであり、==は内容ではなくメモリアドレスを比較するため、等しいかどうかを調べるのに==演算子は使えません。その代わり、文字列内の実際の文字を比較するには、Stringクラスが提供する専用のメソッドを使う必要があります。
文字列比較の主なメソッドは次のとおりです。
equals(Object other): 文字列を別のオブジェクト(通常は別の文字列)と比較します。文字列の文字が同じ順序で並んでいる場合はtrueを返し、それ以外の場合はfalseを返します。このメソッドでは大文字と小文字が区別されます。
equalsIgnoreCase(String other):equalsと似ていますが、大文字と小文字を区別しません。文字列の大文字と小文字に関係なく、同じ文字で構成されている場合はtrueを返し、そうでない場合はfalseを返します。
compareTo(String other): 2つの文字列を辞書順(Unicode値に基づいて)で比較します。文字列が等しい場合は0、最初の文字列が2番目の文字列より小さい場合は負の数、最初の文字列が2番目の文字列より大きい場合は正の数を返します。このメソッドでは大文字と小文字が区別されます。
compareToIgnoreCase(String other):compareToと似ていますが、大文字と小文字を区別しません。
例を見てみましょう。
String str1 = "hello";
String str2 = "hello";
String str3 = "HELLO";
String str4 = "world";
boolean eq1 = str1.equals(str2); // true
boolean eq2 = str1.equals(str3); // false
boolean eq3 = str1.equalsIgnoreCase(str3); // true
int cmp1 = str1.compareTo(str2); // 0
int cmp2 = str1.compareTo(str4); // 負の値
int cmp3 = str4.compareTo(str1); // 正の値
int cmp4 = str1.compareToIgnoreCase(str3); // 0チャレンジ
簡単2つの文字列を入力として受け取り、次の比較を行うcompareStringsという名前のメソッドを作成してください。
equalsを使用して2つの文字列が等しいかどうかを確認し、その結果を出力します。equalsIgnoreCaseを使用して大文字と小文字を区別せずに2つの文字列が等しいかどうかを確認し、その結果を出力します。compareToを使用して2つの文字列を比較し、その結果を出力します。compareToIgnoreCaseを使用して大文字と小文字を区別せずに2つの文字列を比較し、その結果を出力します。
入力文字列がHELLOとhelloの場合の出力例:
HELLO equals hello: false
HELLO equalsIgnoreCase hello: true
HELLO compareTo hello: -32
HELLO compareToIgnoreCase hello: 0自分で試してみよう
import java.util.Scanner;
public class Main {
public static void compareStrings(String str1, String str2) {
// ここにコードを書いてください
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str1 = scanner.nextLine();
String str2 = scanner.nextLine();
compareStrings(str1, str2);
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Javaオンラインコンパイラ