为什么这会返回假?我怎样才能让它返回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
}
}
使用String.equals(otherString)函数来比较strings,而不是==运算符。
原因是==只比较对象引用,其中.equals()检查equality。
System.out.println(x.equals("X"));
您无法将 Java==中的字符串与一般情况进行比较。使用x.equals("X"). 否则,您正在使用引用相等,并且实际上正在测试两者x和"X"是相同的引用(不太可能是这种情况)。
因为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
}
==因此,您使用失败的对象引用比较。
Java 中的 == 运算符检查两个引用是指向同一个对象还是现在。在你的情况下这是错误的。对于字符串比较,使用equals()或equalsIgnoreCase()