混淆与平等的方法

Dus*_*usk 2 java equals

每当我使用带有两个不同StringBuffer对象的equals()方法时,我得到的结果为false,但是当我使用带有两个不同String对象的equals()方法时,我得到的结果为true.为什么?

    String s=new String("434");
    String s1=new String("434");

    System.out.println(s.equals(s1));//true

   StringBuffer s=new StringBuffer("434");
   StringBuffer s1=new StringBuffer("434");

   System.out.println(s.equals(s1));//false
Run Code Online (Sandbox Code Playgroud)

Thi*_*Roy 15

StringBuffer不会覆盖equals().因此,调用Object.equals(),它比较对象标识(内存地址).String确实覆盖equals并比较内容.

  • 可能是因为StringBuffer的实现可能在不调用toString()的情况下使得等于比较非平凡,因此通过强制客户端调用它来执行相等性检查,可以更好地调用toString(). (2认同)