当我比较两个具有相同下划线字符串的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));
}
}
答案 0 :(得分:3)
这里有更深层次的答案:不要假设对于一个班级来说,平等意味着什么。相反:转到javadoc首先确定该类是否覆盖 equals()
- 如果是,请阅读其中的详细信息。
换句话说:您只是假设StringBuilders在匹配内容时相等。但事实并非如此。由于此类未覆盖equals()
,因此您在执行true
时只会收到someBuilder.equals(someBuilder)
结果。在比较构建器时,发送到构建器的字符无关紧要。