为什么这会返回false?我怎样才能让它返回真实?
public class Test {
public static void main(String [] args) {
char character = 'X';
String x = Character.toString(character);
System.out.println(x == "X"); // returns false
}
}
答案 0 :(得分:4)
使用String.equals(otherString)功能比较strings
,而不是==
运营商。
原因是==
只是比较对象引用,而.equals()
检查equality
。
System.out.println(x.equals("X"));
答案 1 :(得分:2)
您无法将Java中的字符串与==
进行比较。使用x.equals("X")
。否则,您正在使用引用相等,并且实际上正在测试x
和"X"
是相同的引用(不太可能是这种情况)。
答案 2 :(得分: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
}
因此,使用==
比较对象引用失败。
答案 3 :(得分:0)
== operator检查两个引用是指向同一个对象还是现在指向。在你的情况下这是错误的。
对于字符串比较,请使用equals()
或equalsIgnoreCase()