-3

为什么这会返回假?我怎样才能让它返回true?

public class Test {
    public static void main(String [] args) {
        char character = 'X';
        String x = Character.toString(character);
        System.out.println(x == "X"); // returns false
    }
}
4

4 回答 4

4

使用String.equals(otherString)函数来比较strings,而不是==运算符。

原因是==只比较对象引用,其中.equals()检查equality

 System.out.println(x.equals("X"));
于 2013-07-04T11:15:58.603 回答
2

您无法将 Java==中的字符串与一般情况进行比较。使用x.equals("X"). 否则,您正在使用引用相等,并且实际上正在测试两者x"X"是相同的引用(不太可能是这种情况)。

于 2013-07-04T11:15:30.623 回答
1

因为Character.toString(character)返回一个新的String. 因此x =="X"false==比较引用,而不是内容。比较String,使用equals()方法。

System.out.println(x.equals("X"));

Character.toString(character);调用String.valueOf(character),其代码为:

public static String valueOf(char c) {
  char data[] = {c};
  return new String(0, 1, data); // new String object created here
}

==因此,您使用失败的对象引用比较。

于 2013-07-04T11:15:56.360 回答
0

Java 中的 == 运算符检查两个引用是指向同一个对象还是现在。在你的情况下这是错误的。对于字符串比较,使用equals()equalsIgnoreCase()

于 2013-07-04T11:18:12.363 回答