String是第二个的子串?

时间:2012-11-11 14:21:09

标签: java string class substring

  

可能重复:
  How do I compare strings in 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;
 }
}

3 个答案:

答案 0 :(得分:6)

您应始终使用equals方法来测试string的内容。

==运算符检查两个reference是指向同一个对象还是不同对象。由于s1.substring()s2.substring()会生成两个不同的字符串对象,因此比较它们的reference将为您提供false布尔值。

因此,在checkSubstring方法中,您应该比较您的子字符串: -

if (s1.substring(4).equals(s2.substring(4))) {
    return true;
} else {
    return false;
}

答案 1 :(得分:2)

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

在上面将其更改为s1.substring(4).equals( s2.substring(4))

Java中的

- Objects使用equals()方法进行比较。

- 由于String是Java中的对象,因此必须以相同的方式对待它。

- 此外,如果您尝试比较2个字符串而不管其案例,请使用equalsIgnoreCase()

- " =="用于比较基元类型,还用于检查2 Object Reference Variables是否指向堆上的同一对象。

<强>例如

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

if (d1 == d2){}

答案 2 :(得分:1)

你需要等于功能

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;
}