黑马程序员技术交流社区

标题: StringBuffer的一个小问题 [打印本页]

作者: 小石头39910    时间: 2013-5-30 19:06
标题: StringBuffer的一个小问题
本帖最后由 小石头39910 于 2013-5-31 15:34 编辑

StringBuffer sb=new StringBuffer();
StringBuffer sb1=sb.append("abc");
System.out.println(sb==sb1);
打印结果为什么是true,明明sb1在sb的基础上添加内容了啊,求解
作者: 张俊迪    时间: 2013-5-30 19:15
你的语句可以拆成下面语句,
StringBuffer sb=new StringBuffer();
sb.append("abc");
StringBuffer sb1=sb;
他们指的同一个容器,所以相同
作者: 赵利斌    时间: 2013-5-30 19:27
对啊!!!!!!!!!!
作者: 画饼    时间: 2013-5-30 19:30
Sb跟sb1指向同一个容器。。是你自己绕晕了
作者: 蚂蚁搬家    时间: 2013-5-30 19:32
你这个等于在sb中附加了内容后,将sb的地址传给了sb1,两个引用的内容是相同的,指向的是相同的对象。
作者: 萌小子    时间: 2013-5-30 19:45
这个跟StringBuffer里的内容无关,==符号比的是两个容器的的引用地址。如果要比较内容,要用sb.toString().equals(sb1.toString()).

sb引用的是StringBuffer的对象的引用地址,sb1引用的是sb的引用地址,所以就为true了。
作者: 小羽天空    时间: 2013-5-30 19:53
我估计你是,“== ”运算没弄明白,
举个小例子给你参考下:
                     int a = 1;
                int b = a;
                System.out.println(a==b);//true
这种你懂得话,你的例子:
StringBuffer sb=new StringBuffer();
StringBuffer sb1=sb.append("abc");
System.out.println(sb==sb1);
和上面是一样的性质,就如同指针 sb , sb1 都是指向同一个地址,且==又是判断地址是否相同的,所以sb == sb1就是true。
希望对楼主有帮助。
作者: Super_Class    时间: 2013-5-30 20:09
其实是这样的:
StringBuffer sb = new StringBuffer(); //这句话只是将对象进行初始化,并将应用赋值给变量sb

sb = sb.append("abc");   这个sb对象虽然内容改变了,但是它所持有的引用并没有变。


作者: 神之梦    时间: 2013-5-30 20:09
在俺印象里楼主一直是非常犀利的,这个。。。。。
估计是学习太认真了。。。
要注意劳逸结合。。
作者: x378320002    时间: 2013-5-30 20:23
这个,API写的明白,这个StringBuffer 的append函数返回的还是原来的容器,只是里面多添加了一些东西,所以就相等了,
作者: 石贤芝    时间: 2013-5-30 21:24

简单说就是 sb 和 sb1 指向了同一个地址,这个地址就是 StringBuffer 缓冲区对象的地址。
无论再怎么添加,都是在这个缓冲区对象里面操作的,地址没有变。
作者: Sofoul    时间: 2013-5-30 22:07
指向是同一个引用,所以为true。

无标题.png (22.24 KB, 下载次数: 0)

无标题.png

作者: 小石头39910    时间: 2013-5-30 23:23
神之梦 发表于 2013-5-30 20:09
在俺印象里楼主一直是非常犀利的,这个。。。。。
估计是学习太认真了。。。
要注意劳逸结合。。 ...

兄弟,此话从何说起啊?什么叫做犀利?????不懂,求解释……
作者: 神之梦    时间: 2013-5-30 23:28
就是决定你是比较厉害滴
作者: 殇_心。    时间: 2013-5-31 10:09
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
作者: 花海1989    时间: 2013-9-5 22:29
因为一开始sb是空的,当sb.append("abc")是即在sb上加了字符串abc,而又把此值付给sb1.所以相等的
作者: 沫然    时间: 2013-9-6 15:36
解一
。楼
。正




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