Menu
Coddy logo textTech

String Comparison

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
challenge icon

チャレンジ

簡単

2つの文字列を入力として受け取り、以下の比較を実行する compareStrings という名前のメソッドを作成してください:

  1. equals を使用して2つの文字列が等しいかどうかをチェックし、結果を出力します。
  2. equalsIgnoreCase を使用して2つの文字列が等しいかどうかを(大文字小文字を無視して)チェックし、結果を出力します。
  3. compareTo を使用して2つの文字列を比較し、結果を出力します。
  4. compareToIgnoreCase を使用して2つの文字列を(大文字小文字を無視して)比較し、結果を出力します。

入力文字列 HELLOhello の場合の出力例:

HELLO equals hello: false
HELLO equalsIgnoreCase hello: true
HELLO compareTo hello: -32
HELLO compareToIgnoreCase hello: 0

チートシート

Javaでは、文字列を比較する際に、メモリ アドレスを比較する==演算子ではなく、特定のメソッドを使用します:

  • equals(Object other):大文字小文字を区別した等価比較
  • equalsIgnoreCase(String other):大文字小文字を区別しない等価比較
  • compareTo(String other):大文字小文字を区別した辞書式比較(等しい場合0、最初のものが2番目より小さい場合負の値、大きい場合正の値)
  • compareToIgnoreCase(String other):大文字小文字を区別しない辞書式比較
String str1 = "hello";
String str2 = "HELLO";

boolean eq1 = str1.equals(str2); // false
boolean eq2 = str1.equalsIgnoreCase(str2); // true

int cmp1 = str1.compareTo(str2); // positive value
int cmp2 = str1.compareToIgnoreCase(str2); // 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);
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン