为什么这会返回错误?

时间:2015-05-11 05:04:18

标签: java boolean

我有这个声明,我试图删除第一个字符并用空字符串替换它,但由于某种原因,它返回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)));
    }
}

3 个答案:

答案 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?