StringBuilder和String的 equals的区别

qq_40526988 2018-03-30 09:36:33
 StringBuilder a=new StringBuilder("abc");
     StringBuilder b=new StringBuilder("abc");
        String c="abc";
        String d="abc";

     System.out.println(a.equals(b));

     System.out.println(c.equals(e));

为什么是一个是false  一个是true;
...全文
590 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿顾同学 2018-03-31
  • 打赏
  • 举报
回复


你看看,这样好理解不
Defonds 2018-03-30
  • 打赏
  • 举报
回复
System.out.println(c.equals(e)); e 在哪里声明的
考拉一枚 2018-03-30
  • 打赏
  • 举报
回复
这种自己去看源码就清楚了
阿顾同学 2018-03-30
  • 打赏
  • 举报
回复
兄弟,StringBuilder比的是地址,而String比的是里面的内容, 今天太晚了,后面画个内存图给你看看
方元之外 2018-03-30
  • 打赏
  • 举报
回复
equals 默认是比较地址的 但是string重写了equals方法,让他比较内容 但是stringbuffer和stringbuilder并没有重写equals方法,所以比较的是地址
  • 打赏
  • 举报
回复
Object对equals()方法的定义是:对象a和b如果是同一个对象的引用,那么a.equals(b)返回true,否则返回false。 String类重写了Object的equals()方法,String对象的equals()方法比较的是内容,内容相等则返回true; StringBuffer和StringBuilder没有重写equals()方法,与Object的equals()方法的定义相同。
  • 打赏
  • 举报
回复
public boolean equals(Object obj) { return (this == obj); } 这是Object的equals方法; public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String) anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; } 这是String的equals方法。一目了然

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧