StringBuffer sb=new StringBuffer("abc");
StringBuffer sb1=new StringBuffer("abc");
System.out.print(sb==sb1); //false
System.out.print(sb.equals(sb1)); //false 为什么用都输出false? 它们的值得不是相等吗,请问为什么?
StringBuffer sb1=new StringBuffer("abc");
System.out.print(sb==sb1); //false
System.out.print(sb.equals(sb1)); //false 为什么用都输出false? 它们的值得不是相等吗,请问为什么?
可以转成String来比较
StringBuffer sb1 = new StringBuffer("abc");
System.out.println(sb.toString().equals(sb1.toString())); //true
System.out.println(sb.equals(sb1)); //false
System.out.println(sb==sb1); //false
System.out.println(sb.toString()==sb1.toString()); //false
sb.equals(sb1)----------->false(没重写超类object的equals方法)
api的解释:
Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
其他的要想比较必须重写equals方法
而Object类中的equals方法是用来比较地址的,所以等于false.