源代码:
public class TestSB{
public static void main(String args[]){
String s1="Arnold";
StringBuffer sb1=new StringBuffer("Arnold");
StringBuffer sb2=new StringBuffer("Arnold");
System.out.println(sb1==sb2);
System.out.println(sb1.equals(sb2)); //should be true but printing false
System.out.println(sb1.equals(s1)); //should be true but printing false
}
}
上面是我编写的源代码,第7行和第8行的输出都应该为true,但结果为false,这是什么原因?
输出:
false
false
false
答案 0 :(得分:0)
这是因为StringBuffer
/ StringBuilder
不会像您期望的那样覆盖Object#equals
。您应该使用sb1.toString().equals(sb2.toString())
或sb1.toString().equals(str)
来比较SB
作为String
的值。