为什么比较具有相同值的字符串==返回false?

时间:2016-02-18 14:33:11

标签: java string equals equality

在下面的代码中,在池中创建一个字符串,然后它是concat,创建另外的字符串对象。决赛是" 2cfalse"并由a引用。然后在第7行,因为Strings'非重复性,我认为它不会创建单独的文字作为" 2cfalse"所以==运算符必须返回true ..为什么它不返回true ..

class demo {
    public static void main(String aaa[]) {
        String a = "";
        a += 2;
        a += 'c';
        a += false;
        if (a == "2cfalse")
            System.out.println(1);
        if (a.equals("2cfalse"))
            System.out.println(2);
    }
}

1 个答案:

答案 0 :(得分:1)

这是因为==String的内存位置String.equals进行比较,后者将按字典顺序进行比较。