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チャレンジ
簡単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チートシート
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);
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
4Operators Part 1
Arithmetic OperatorsModulo OperatorIncrement/DecrementPost Increment/DecrementArithmetic ShortcutsComparison OperatorsString Comparison5Operators Part 2
Logical Operators Part 1Logical Operators Part 2Recap - Simple LogicLogical Operators Part 3Logical Operators Part 43Variables Part 2
ConstantsNaming ConventionsRecap - Initialize VariablesType Casting Part 1Type Casting Part 26Decision Making
If StatementIf - ElseSwitch StatementTernary OperatorRecap - If ElseNested If - Else