StringBuilder与String比较时,如果直接使用“==”将报错,提示“==”无法应用在StringBuilder与String之间。如果使用equals,如下面所示:
StringBuilder s = new StringBuilder();
s.append("ab");
if(s.equals("ab"))
{
System.out.println("true");
}else{
System.out.println("false");
}
将会输出“false”,观察StringBuilder中的equals方法源码可以看到:
public boolean equals(Object obj) {
return (this == obj);
}
这个方法直接比较的是地址指针,s是通过new直接创建在堆中,而“ab”创建在字符串常量池中,其地址不一样,所以返回false。
因此比较StringBuilder与String可以将StringBuilder通过.toString()方法转换为String后进行,String中的equals方法是执行逐字符比较后返回结果。