StringBuilder与String比较结果错误

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方法是执行逐字符比较后返回结果

上一篇:正则表达式学习笔记


下一篇:正则表达式的使用