私と同じように、私が最初にJavaを使い始めたとき、「==」演算子を使用して2つのStringインスタンスが等しいかどうかをテストしたかったのですが、Javaでそれを行う正しい方法ではありません。
このチュートリアルでは、Java文字列を正しく比較するためのいくつかの異なる方法を示します。まず、私がほとんどの場合に使用するアプローチから始めます。このJava文字列比較チュートリアルの最後に、Java文字列を比較するときに「==」演算子が機能しない理由についても説明します。
オプション1:equalsメソッドを使用したJava文字列の比較
ほとんどの場合(おそらく95%の場合)、次のように文字列をJava Stringクラスのequalsメソッドと比較します。
if (string1.equals(string2))
このString equalsメソッドは2つのJava文字列を調べ、それらにまったく同じ文字列が含まれている場合、それらは等しいと見なされます。
equalsメソッドを使用した簡単な文字列比較の例を見てみましょう。次のテストが実行された場合、文字が完全に同じではないため(文字の大文字と小文字が異なるため)、2つの文字列は等しいとは見なされません。
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
ただし、次の例のように、2つの文字列にまったく同じ文字列が含まれている場合、equalsメソッドはtrueを返します。
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
オプション2:equalsIgnoreCaseメソッドを使用した文字列比較
一部の文字列比較テストでは、文字列が大文字か小文字かを無視する必要があります。この大文字と小文字を区別しない方法で文字列が等しいかどうかをテストする場合は、次のように、StringクラスのequalsIgnoreCaseメソッドを使用します。
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
オプション3:compareToメソッドを使用したJava文字列の比較
また、Java文字列を比較する3番目の一般的ではない方法があり、それはStringクラスのcompareToメソッドを使用します。2つの文字列がまったく同じ場合、compareToメソッドは値0(ゼロ)を返します。この文字列比較アプローチの簡単な例を次に示します。
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
私はJavaにおけるこの等価の概念について書いていますが、Java言語には基本Java Objectクラスにequalsメソッドが含まれていることに注意することが重要です。独自のオブジェクトを作成していて、オブジェクトの2つのインスタンスが「等しい」かどうかを確認する手段を提供したい場合は、クラスのこのequalsメソッドをオーバーライド(および実装)する必要があります(Java言語が提供するのと同じ方法で) Stringのequalsメソッドにおけるこの等価/比較動作)。
この== 、. equals()、compareTo()、compare()を確認してください。