Java中的字符串比较:“==”有什么问题?

时间:2011-12-30 06:20:35

标签: java string

  

可能重复:
  Java String.equals versus ==

public class S_eaqual {
    public static void main(String[] args) {
        String s1 = "one", s2 = "two";
        if (s1 + s2 == "onetwo") {
            System.out.println("Yes..equal");
        }
    }
}

此类比较显示错误。这不是比较字符串的正确方法吗? 可以使用String运算符比较两个==个对象。那么为什么这会出现错误?

4 个答案:

答案 0 :(得分:4)

应使用equals方法比较字符串。

String s1 = "one", s2 = "two";
if("onetwo".equals(s1+s2)) {
  System.out.println("Yes..equal");
}

答案 1 :(得分:3)

试试这个......

String s3 = s1 + s2
if(s3.equals("onetwo")) {
...

==比较它们是否引用同一个对象,s1+s2的结果不是这种情况,并且字符串上的.equals()方法比较值是相同的。通常,您只使用==进行原始值比较。虽然如果您打算检查以确保两个引用指向同一个对象,您可以为对象执行此操作。

答案 2 :(得分:2)

使用(s1+s2).equals("onetwo");代替

答案 3 :(得分:2)

使用等于

if (s1.concat(s2).equals("onetwo")) System.out.println("Yes..equal");