为什么这会返回假?我怎样才能让它返回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()