1

重複の可能性:
Java で文字列を比較するにはどうすればよいですか?

私はおそらくどこかで論理的なエラーを犯しましたが、どこにあるのかわかりません。条件が TRUE のように見えても、出力は常に FALSE です。

public class Test {
  public static void main(String[] args) {

    String str1 ="Hello world";
    String str2 ="Hello world";

    if (checkSubstring(str1,str2)){
         System.out.println("Cool");
    }
    else 
         System.out.println("Not cool");
 }

 static boolean checkSubstring(String str1, String str2) {

    String s1 = str1;
    String s2 = str2;
    if (s1.substring(4)== s2.substring(4)){
      return true;  
    }
    else
    return false;
 }
}
4

3 に答える 3

6

equalsのコンテンツをテストするには、常にメソッドを使用する必要がありstringます。

==reference演算子は、2 つのオブジェクトが同じオブジェクトを指しているか、異なるオブジェクトを指しているかをチェックします。とは 2 つの異なる文字列オブジェクトを生成するためs1.substring()s2.substring()それらを比較するとブール値referenceが得られます。false

したがって、checkSubstringメソッドでは、次のように部分文字列を比較する必要があります: -

if (s1.substring(4).equals(s2.substring(4))) {
    return true;
} else {
    return false;
}
于 2012-11-11T14:22:21.897 に答える
2

s1.substring(4)== s2.substring(4)

上記で変更しますs1.substring(4).equals( s2.substring(4))

- Objects Java ではメソッドを使用して比較されますequals()

-String Javaのオブジェクトと同様に、同じ方法で処理する必要があります。

-さらに、ケースに関係なく 2 つの文字列を比較しようとしている場合は、 を使用しますequalsIgnoreCase()

- "==" は、プリミティブ型Object Reference Variablesの比較に使用され、2 つがヒープ上の同じオブジェクトを指しているかどうかを確認するためにも使用されます。

例えば:

Dog d1 = new Dog();
Dog d2 = d1;

if (d1 == d2){}
于 2012-11-11T14:23:06.187 に答える
1

equals 関数が必要です

static boolean checkSubstring(String str1, String str2) {

    String s1 = str1;
    String s2 = str2;
    if (s1.substring(4).equals(s2.substring(4))){
    return true;    
    }
    else
    return false;
}
于 2012-11-11T14:23:29.907 に答える