当前位置: 代码迷 >> J2SE >> stringbuffer ==, equals 请指点解决办法
  详细解决方案

stringbuffer ==, equals 请指点解决办法

热度:510   发布时间:2016-04-24 13:11:19.0
stringbuffer ==, equals 请指点
Java code
package t001;public class C01 {    /**     * @param args     */    public static void main(String[] args) {        // TODO Auto-generated method stub         StringBuffer b1 = new StringBuffer("abc");         StringBuffer b2 = new StringBuffer("abc");         System.out.println(b1==b2);  //false         System.out.println(b1.equals(b2)); //false                  StringBuilder b3 = new StringBuilder("def");         StringBuilder b4  = new StringBuilder("def");         System.out.println(b3==b4);  //false         System.out.println(b3.equals(b4)); //false    }}

为什么都是false?
尤其是用equals 方法也是false
谁提点一下 ? 谢谢

------解决方案--------------------
"==" 是false是因为比较的是两个不同的对象,地址不一样,所以是false。
"equals" 是false是因为StringBuffer类本身没有覆盖Object类的equals方法,即使用的是equals的默认实现,就是直接使用"==",所以结果是和"=="一样的。
------解决方案--------------------
探讨
...又被搞晕了
== 比较的是什么?
equals 比较的是什么?
谁说的清楚点?

------解决方案--------------------
探讨
这StringBuffer是一种对象,不能用==来判断
还有也不能用equals,这是用来判断字符串的
这里有几种办法来解决,
1。重写对象的大小比较,=号这个方法
2. 我一直没有用这个来比较stringbuffer所以不知道StringBuffer有没有实现了camparable接口,不知道能不能用这个方法,
3. 最简单的就是b3.toString().equals(b4.toString());
  相关解决方案