我是Java的新手,我很难理解为什么此代码中的if / else语句似乎认为字符串a
和c
不相等。
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及其网络服务来编译/执行代码,如果这很重要的话。
由于
答案 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