为什么这些字符串不相等?

时间:2015-08-21 20:12:03

标签: java string

我是Java的新手,我很难理解为什么此代码中的if / else语句似乎认为字符串ac不相等。

public class Main {
    public static void main(String[] args) {
        String a = "foo";
        String b = "Foo";
        String c = b.toLowerCase();

        System.out.println(c);

        if (a == c) {
            System.out.println("Strings are equal");
        }
        else {
            System.out.println("Strings are NOT equal");
        }
    }
}

这是输出:

foo
Strings are NOT equal

我使用www.learnjava.org及其网络服务来编译/执行代码,如果这很重要的话。

由于

1 个答案:

答案 0 :(得分:1)

您不应将字符串与==进行比较,因为这只会比较它们是否为SAME对象,但如果它们是EQUAL则不会。

String x = "abc";
String y = x;
String z = "abc";

boolean a = x == y; // true
boolean b = x == z; // can be false (unless the compiler optimizes it, but you shouldn't rely on that)
boolean c = x.equals(z); // true - this is the right way to compare Strings