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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不破大地 中级黑马   /  2013-6-17 18:08  /  1341 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

之前朋友问我,String s=new String("abc");这个代码中创建了几个对象?
我毫不犹豫地回答:两个,但有时又有点讲不清道理和深层原理,还请各位大神指教,非常感谢哈。。

5 个回复

倒序浏览
因为new方法是创建对象的,这个楼主应该知道,相当于创建了一个String类的对象,但它调用的构造函数是String(String original)这个,所以需要传入一个String对象作为参数,这是就用了一种字符串对象的简单创建方法"abc"又创建了一个字符串对象。所以在数据结构中,这条代码实际是创建了两个字符串对象。
回复 使用道具 举报
王磊 发表于 2013-6-17 18:32
因为new方法是创建对象的,这个楼主应该知道,相当于创建了一个String类的对象,但它调用的构造函数是Strin ...

楼主也可以这样理解,"abc"相当于调用了构造函数String(char[] value),而是实际写法应该是String(chs[] = {'a','b','c'}),
"abc"就是:
char[] chs = {'a','b','c'};
String s1 = new String(chs);
String s2 = new String(s2);//这样就能看出来s1和s2是两个对象。不过开发时最好别这样写。。。。

同样的例子还可以有很多,楼主在看看String的API说明文档中的构造函数部分,就清楚了。
回复 使用道具 举报
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~
回复 使用道具 举报
孙百鑫 发表于 2013-6-22 01:49
楼主您好~帖子长时间未作出回答,我已经将您的帖子改成已解决。如果有问题的话可以私密我哦~ ...

其实原因是我不知道咋更改帖子类型,咋弄的?
回复 使用道具 举报
不破大地 发表于 2013-6-22 11:09
其实原因是我不知道咋更改帖子类型,咋弄的?

因为位论坛更新就没了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马