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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hel 中级黑马   /  2013-11-9 22:09  /  1074 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String A,B,C;
A="a";
B="b";
A=A+B;
StringBuffer D=new StringBuffer("abc");
D=D.append("567");

谁能告诉我创建了几个对象啊?

4 个回复

倒序浏览
Streing A,B,C;这里一共声明了三个String类型的变量A,B,C;
下面的只是赋值的引用指向问题、就不用看了!
StringBuffer D new StringBuffer("abc");声明了一个D的变量。
D=D.append();也只是赋值与引用指向的声明。没有产生新的对象。

一共四个对象。A,B,C,D.
个人理解,我也不知道对错与否。如有错误,万望告之。
回复 使用道具 举报
目测也是4个:"a","b","ab" & new StringBuffer()
回复 使用道具 举报
本帖最后由 中关村阿旺 于 2013-11-9 22:54 编辑

我感觉创建了3个对象。
String A,B,C;只是声明了3个变量,并没有任何指向,也就没有创建对象。
A="a";
在常量池中有了一个常量"a",创建了一个对象A,A指向常量"a"。
B="b";
在常量池中有了一个常量"b",创建了一个对象B,B指向常量"b"。
A=A+B;
A+B:在常量池中有了一个常量"ab"。没有创建对象,只不过A的指向变化了,指向常量"ab"。
StringBuffer D=new StringBuffer("abc");
D=D.append("567");
创建了一个对象D。
根据毕老师经典的“面盆理论”,还是同一个面盆,还是同一个对象D。

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

回复 使用道具 举报
创建了四个对象:“a”,"b",new Stringbuffer("abc"),"abc"这四个对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马