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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李红飞 中级黑马   /  2012-5-25 07:47  /  1368 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s1 ="aaab";    这里我知道是创建了一个对象。
但是:
String s = new String("xyz");创建了几个对象?
创建了一个对象,还是创建两几个对象??

3 个回复

倒序浏览

String s1 ="aaab"是在常量池中创建了一个”aaab",然后s1进栈,引用型变量s1指向“aaab"
String s  =new String("xyz"):是在堆内存中new一个对象实体,它在构造的时候接收了一个字符串”xyz“对象,然后引用型变量s指向new的对象实体。
所以。第一个是一个对象。第二句在内存中产生两个对象。
这是老毕讲的一个经典问题。在Day13——01里有讲
回复 使用道具 举报
String s=new String("xyz")会首先在堆中创建一个String类的对象,然后检查常量池中有没有"xyz",若没有创建一个;若有,则不再创建。
回复 使用道具 举报
String s = new String("xyz");创建了几个对象?
创建了一个对象,还是创建两个对象??
首先在堆中创建一个String类的对象,然后检查常量池中有没有"xyz",若没有创建一个;若有,则不再创建

String s = new String("xyz");
String s = new String("xyz");
这个创建了三个对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马