我有这个声明,我试图删除第一个字符并用空字符串替换它,但由于某种原因,它返回false。似乎它只是设置它等于然后询问它是否等于我。
public class Test1
{
public static void main(String[] args)
{
String aString = "123";
String sub = Character.toString(aString.charAt(0));
System.out.println(sub == Character.toString(aString.charAt(0)));
}
}
答案 0 :(得分:2)
请尝试.equals
而不是==
,因为==
用于参考检查,.equals
用于检查值。看到你的代码后,我认为你需要进行价值检查。因此,请使用.equals
,如下所示,
sub.equals(Character.toString(aString.charAt(0))); //this will return true.
答案 1 :(得分:0)
尝试.equals()
方法而不是==运算符。
答案 2 :(得分:0)
关于String类:
equals()方法比较"值"在String实例中(在堆上),无论两个对象引用是否引用相同的String实例。如果任何两个String类型的对象引用引用相同的String实例那么太棒了!如果两个对象引用引用两个不同的String实例,那么它并没有什么区别。它的价值" (即:正在比较的每个String实例中的字符数组的内容)。
另一方面," =="运算符比较两个对象引用的值,以查看它们是否引用相同的String实例。如果两个对象引用的值"引用"相同的String实例然后布尔表达式的结果将是" true" .. duh。另一方面,如果两个对象引用的值都是"请参考"不同的String实例(即使两个String实例具有相同的"值",也就是说,每个String实例的字符数组的内容是相同的)布尔表达式的结果将是" false& #34;
- Jacques Colmenero的致谢 见What is the difference between == vs equals() in Java?