String是第二个的子串?

geo*_*van 1 java string substring class

可能重复:
如何比较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;
 }
}
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 6

您应该始终使用equals方法来测试内容string.

==运算符检查两个reference是否指向同一个对象或不同的对象.并且因为s1.substring()并且s2.substring()将生成两个不同的字符串对象,因此比较它们reference将给出false布尔值.

所以,在checkSubstring方法中,你应该像这样比较你的子串: -

if (s1.substring(4).equals(s2.substring(4))) {
    return true;
} else {
    return false;
}
Run Code Online (Sandbox Code Playgroud)