2012-11-11 35 views
1

可能重复:
How do I compare strings in Java?字符串是第二个子字符串?

我大概做了一个逻辑错误的地方,但我不知道在哪里。 输出始终为FALSE,即使条件似乎是TRUE

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

[我如何在Java中比较字符串?](http://stackoverflow.com/questions/513832/how -do-i-compare-strings-in-java) – Baz

回答

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

你是快枪。 – Juvanis

+1

@BlueBullet ..哈哈。正在等待我的目标。 ;) –

2

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

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

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

-作为String是Java的对象,它必须以同样的方式对待。

-此外,如果您试图比较2个字符串,无论其案例,然后使用equalsIgnoreCase()

-“==”用于比较的原始类型,并且也检查2 Object Reference Variables是否指向在堆或不相同的对象上。

如:

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

if (d1 == d2){} 
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; 
} 
+0

哇,这很快。谢谢你们/女孩 –

相关问题