比较java中的两个字符串

时间:2012-10-03 10:51:34

标签: java

  

可能重复:
  How do I compare strings in Java?

我写了一些比较两个字符串“abc”和“de”的代码。字符串abc被解析并返回到“doc”到ext,然后进行比较。虽然看起来条件是真的但仍然是其他部分正在执行。我没有得到PLZ帮助我....非常感谢。

public class xyz{

    String abc="doc2.doc";
    String de="doc";

    public static void main(String arg[]){

    xyz c=new xyz();

    String ext = null;
    String s =c.abc;
        String d =c.de;
    int i = s.lastIndexOf('.');

    if (i > 0 && i < s.length() - 1){
    ext = s.substring(i+1).toLowerCase();
    }
    System.out.println(ext);
    if(ext==d){

    System.out.println("true");
    }
    else{
    System.out.println("false");
    }


    }


    }

7 个答案:

答案 0 :(得分:3)

您无法将字符串与==运算符进行比较。

您必须使用String.equals()

在你的情况下,它将是

if (ext.equals(d)) {
    System.out.println("true");
} else {
    System.out.println("false");
}

答案 1 :(得分:1)

==测试参考相等性。

.equals()测试价值平等。

因此,如果你真的想测试两个字符串是否具有相同的值,你应该使用.equals()

// These two have the same value
new String("test").equals("test") ==> true 

// ... but they are not the same object
new String("test") == "test" ==> false 

// ... neither are these
new String("test") == new String("test") ==> false 

在这种情况下

if(ext.equals(d)) {
    System.out.println("true");
}
else {
    System.out.println("false");
}

答案 2 :(得分:0)

使用equals运算符来比较字符串:

ext.equals(d)

答案 3 :(得分:0)

你可以用.equals()编写它。

private String a = "lol";

public boolean isEqual(String test){
  return this.a.equals(test);
}

答案 4 :(得分:0)

您无法将字符串与==进行比较,因为它们是不同的对象。 内容可能相同,但这不是==看的内容。 在其中一个字符串上使用equals方法将其与另一个字符串进行比较。

在您的代码中,使用:

if(d.equals(ext)){

如果您需要比较两个字符串,并且只有一个字符串是变量,我建议采用以下方法:

"foo".equals(variableString)

这样你就可以确定你不会在Null对象上调用equals。

另一种可能性是使用compareTo方法而不是equals方法,该方法也可以在其他一些Java类中找到。当字符串匹配时,compareTo方法返回0.

您可以在Java here中找到有关字符串的更多信息。

答案 5 :(得分:0)

你应该写

if(ext.equals(d))

instead of 

if(ext==d)

答案 6 :(得分:0)

String str1, str2, str; // References to instances of String or null

str1 = "hello"; // The reference str1 points to an instance of "hello" string
str2 = "hello"; // The reference str2 points to another instance of "hello" string
str3 = str2;    // The reference str3 points to the same instance which str2 does.

assert str1.equals( str2 ); // Both string instances are identical.
assert str1 != str2;        // Both references point to independent instances of string.
assert str2 == str3;        // Both references point to the same instance of string.