0

可能重复:
如何比较 Java 中的字符串?
Java中的字符串:等于vs ==

我有两个字符串;一个是小写的“hello”,一个是大写的“HELLO”。

当我将 toUpperCase 应用于变量然后使用布尔值来比较它们时,它们的结果是不相等的,我不知道为什么。

public static void main(String[] args) {

    String a = "hello";
    String b = "HELLO";

    a = a.toUpperCase();
    b = b.toUpperCase();

    boolean c = (a==b);

    System.out.println(b + " " + a + " " + c);
}

输出是 HELLO HELLO false 但它应该是 HELLO HELLO true。不应该吗?我错过了什么?

4

5 回答 5

8

toUpperCase工作正常。您必须使用equals来检查两个字符串的相等性。

boolean c = a.equals(b);
于 2012-09-20T18:58:55.293 回答
4

String.toUpperCase()创建一个新对象

boolean c = (a==b);

将是错误的,因为您在String这里比较了 2 个不同的参考。

您可以使用

boolean c = a.equals(b);

检查字符串内容。

于 2012-09-20T18:58:55.143 回答
1

这里 '=' 检查引用和 .equals 比较实际内容

public static void main(String[] args) {

    String a = "hello";
    String b = "HELLO";

    a = a.toUpperCase();
    b = b.toUpperCase();

    boolean c = (a.equals(b));

    System.out.println(b + " " + a + " " + c);
}

如果你想使用'=',那么试试这个:

public static void main(String[] args) {

    String a = "hello";
    String b = "HELLO";

    a = a.toUpperCase();
    b = a;

    boolean c = (a==b);

    System.out.println(b + " " + a + " " + c);
}

谢谢

于 2012-09-20T19:42:30.903 回答
0

不正确的是字符串比较,而不是toUpperCase()

改为这样做:

boolean c = a.equals(b);

这是因为对象的值相等,但您仍然有两个不同的对象实例。

于 2012-09-20T19:00:17.843 回答
0

您正在比较两个字符串对象引用(显然不一样)。相反,您可以只使用 a.equal(b)

所以你的编辑应该是:

字符串 a = "你好"; 字符串 b = "你好";

a = a.toUpperCase();
b = b.toUpperCase();

boolean c = (a.equals(b));

System.out.println(b + " " + a + " " + c);

}

于 2012-09-20T19:00:22.460 回答