可能重复:
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。不应该吗? 我错过了什么?
答案 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);
}