A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江南雨 中级黑马   /  2013-5-25 13:25  /  1329 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 江南雨 于 2013-5-25 21:46 编辑
  1. StringBuffer sb = new StringBuffer("hello");  
  2. StringBuffer sb2 = new StringBuffe("hello");  
  3. System.out.println(sb.equals(sb2));  
复制代码
不懂。求给出原因?

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

4 个回复

倒序浏览
又是equals  看的人头晕,求哪位大神能全面的解说一下这equals比较的内容到底是个什么东西
回复 使用道具 举报
运行一下就知道结果了
他跟String不同,equals是string的方法,但是stringbuffer本身没有equals方法,因为StringBuffer继承object,所以实际使用的是object的equals方法。比较的是两个对象,如果sb,sb2不为空,那么sb和sb2必须是引用同一个对象时,返回 true
回复 使用道具 举报
StringBuffer 没有复写equals()方法,所以这里调用的是父类Object中的equals();

Object 中的equals() 方法比较的是对象的内存地址;

你用StringBuffered new了两个对象,它们的内存地址不同,所以结果是false;

评分

参与人数 1技术分 +1 收起 理由
殇_心。 + 1

查看全部评分

回复 使用道具 举报
运行结果为false,虽然sb和sb2的值相同,但是这两个StringBuffer对象的引用指向不同的内存空间,所以它们不是同一个对象。
equals方法是父类Object的方法,StringBuffer没有覆盖父类的这个方法,还是沿用父类方法的功能。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马