黑马程序员技术交流社区

标题: StringBuffer问题 [打印本页]

作者: kfcka    时间: 2015-2-12 21:10
标题: StringBuffer问题
本帖最后由 kfcka 于 2015-2-12 21:38 编辑

StringBuffer sb1=new StringBuffer();
StringBuffer sb2=new StringBuffer("abc");
问题:sb1==sb2 ? 为什么?同问:
StringBuffer sb1=new StringBuffer();
StringBuffer sb2=sb1.append("abc");
问题:sb1==sb2 ? 为什么?

作者: 万合天宜    时间: 2015-2-12 21:14
肯定是false啊,==比较的是地址。而StringBuffer是字符串缓冲区,你new了两个StringBuffer,在堆内存里开辟了两个空间,地址肯定不相同啊。返回的就会false。
作者: coolmiao13    时间: 2015-2-12 22:46
首先==比较的是地址值,先明确一下
第一个是false,因为不管是内容还是地址都不一样,每new一次就是建立一个新的对象,那么他们的地址肯定不一样。况且一个的值是空一个的值是abc。
第二个还是true,因为StringBuffer sb2=sb1.append("abc");的时候相当于一个String类的变量sb2指向了sb1.append("abc")这个对象,sb1.append("abc")会返回一个字符串容器对象让String类的变量sb1指向,那么sb1就==sb2了。
以上,如果有什么错误希望指正。
作者: 曾宇    时间: 2015-2-13 02:42
第一个false
第二个ture
第一个创建了两个内存空间地址
第二个使用了第一个的内存地址




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