toUpperCase不能像我期望的那样运作

时间:2012-09-20 18:57:09

标签: java

  

可能重复:
  How do I compare strings in Java?
  Strings in Java : equals vs ==

我有两个字符串;一个是小写的“你好”,一个是上层的“你好”。

当我将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假,但它应该是HELLO HELLO true。不应该吗? 我错过了什么?

5 个答案:

答案 0 :(得分:8)

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

boolean c = a.equals(b);

答案 1 :(得分:4)

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

boolean c = (a==b);

将是错误的,因为您在此处比较了两个不同的String引用。

您可以使用

boolean c = a.equals(b);

检查字符串内容。

答案 2 :(得分: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);
}

由于

答案 3 :(得分:0)

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

请改为:

boolean c = a.equals(b);

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

答案 4 :(得分:0)

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

所以你的编辑应该是:

String a =“hello”;     字符串b =“HELLO”;

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

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

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

}