黑马程序员技术交流社区
标题:
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