StringBuilder比较返回错误的结果

时间:2017-11-27 13:42:16

标签: java

当我比较两个具有相同下划线字符串的StringBuilder对象时,即使值为true,也会返回false

public class Test {

    public static void main(String [] args) {
        StringBuilder strBld_1 = new StringBuilder("string");
        StringBuilder strBld_2 = new StringBuilder("string");

        System.out.println(strBld_1.equals(strBld_2));
    }
 }

1 个答案:

答案 0 :(得分:3)

这里有更深层次的答案:不要假设对于一个班级来说,平等意味着什么。相反:转到javadoc首先确定该类是否覆盖 equals() - 如果是,请阅读其中的详细信息。

换句话说:您只是假设StringBuilders在匹配内容时相等。但事实并非如此。由于此类未覆盖equals(),因此您在执行true时只会收到someBuilder.equals(someBuilder)结果。在比较构建器时,发送到构建器的字符无关紧要。