黑马程序员技术交流社区

标题: 大家看看输出的是true还是false [打印本页]

作者: 江南雨    时间: 2013-5-25 13:25
标题: 大家看看输出的是true还是false
本帖最后由 江南雨 于 2013-5-25 21:46 编辑
  1. StringBuffer sb = new StringBuffer("hello");  
  2. StringBuffer sb2 = new StringBuffe("hello");  
  3. System.out.println(sb.equals(sb2));  
复制代码
不懂。求给出原因?
作者: 薛淑凯    时间: 2013-5-25 14:15
又是equals  看的人头晕,求哪位大神能全面的解说一下这equals比较的内容到底是个什么东西
作者: 韩明海    时间: 2013-5-25 14:20
运行一下就知道结果了
他跟String不同,equals是string的方法,但是stringbuffer本身没有equals方法,因为StringBuffer继承object,所以实际使用的是object的equals方法。比较的是两个对象,如果sb,sb2不为空,那么sb和sb2必须是引用同一个对象时,返回 true
作者: 蔡增辉    时间: 2013-5-25 14:25
StringBuffer 没有复写equals()方法,所以这里调用的是父类Object中的equals();

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

你用StringBuffered new了两个对象,它们的内存地址不同,所以结果是false;
作者: student    时间: 2013-5-25 14:31
运行结果为false,虽然sb和sb2的值相同,但是这两个StringBuffer对象的引用指向不同的内存空间,所以它们不是同一个对象。
equals方法是父类Object的方法,StringBuffer没有覆盖父类的这个方法,还是沿用父类方法的功能。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2