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是指向同一个对象还是不同的对象。因为s1.substring()ands2.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()方法进行比较。

-作为JavaString中的Object,它必须以相同的方式处理。

-此外,如果您尝试比较 2 个字符串而不考虑它们的大小写,请使用equalsIgnoreCase().

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

例如:

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 回答