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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© L.I.F.E 中级黑马   /  2013-5-27 15:04  /  1786 人查看  /  8 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 L.I.F.E 于 2013-5-28 08:05 编辑
  1. StringBuffer sb1 = new StringBuffer();
  2.                 sop(sb.toString());
  3.                 StringBuffer sb1 = sb.append(34);//这里传递的是是什么啊?
  4.                 sop(sb.toString());
  5.                 sop(sb1.toString());
  6.                 sop("sb==sb1:"+(sb==sb1));
复制代码

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 下次贴出问题,把测试结果也打印下.

查看全部评分

8 个回复

倒序浏览
是sb中传入一个34,然后又将sb1指向这个地址?
回复 使用道具 举报
看看api文档一切见分晓:
append方法是将这个元素添加进容器中,然后返回这个容器;
就这么简单。。。
回复 使用道具 举报
Miss小强 发表于 2013-5-27 15:10
看看api文档一切见分晓:
append方法是将这个元素添加进容器中,然后返回这个容器;
就这么简单。。。 ...
  1. StringBuffer sb = new StringBuffer();//定义一个容器,sb指向它。
  2.                 sop(sb.toString());
  3.                 StringBuffer sb1 = sb.append(34);//这里传递的是是什么啊?这里就是说向容器中传递34,然后,再让sb1指向这个容器?
  4.                 sop(sb.toString());
  5.                 sop(sb1.toString());
  6.                 sop("sb==sb1:"+(sb==sb1));
复制代码
回复 使用道具 举报
利用sb调用功能传入34,sb1=sb,就是说他们两个指向同一个堆内存地址

评分

参与人数 1技术分 +1 收起 理由
曹睿翔 + 1 鼓励下

查看全部评分

回复 使用道具 举报
01.StringBuffer sb1 = new StringBuffer();

02.                sop(sb.toString());

03.                StringBuffer sb1 = sb.append(34);
             //这里调用的是StringBuffer的append方法添加数据,该方法返回的是StringBuffer类型的对象,所以定义一个StringBuffer的引用,也就是sb1来指向它,那么就相于
       //sb1和sb指向了同一个对象。所以最后sb==sb1的结果为true.


04.                sop(sb.toString());

05.                sop(sb1.toString());

06.                sop("sb==sb1:"+(sb==sb1));
回复 使用道具 举报
L.I.F.E 发表于 2013-5-27 19:59

完全正确。。。
回复 使用道具 举报
SOAR 中级黑马 2013-5-27 22:59:09
8#
StringBuffer sb1 = sb.append(34);//这里传递的是是什么啊?
传递的是数字34,但是传进去以后,程序会自动调用toString()方法.
就像我们可以在Sysytem.out.println();这个括号里放任何东西一样。
回复 使用道具 举报
这里其实传递的是一个元素,就是一个对象,34本身是个int类型的,但被装箱成了一个对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马