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

String s = new String("xyz");创建了几个String Object?哪几个?

6 个回复

倒序浏览
一共是2个
一个是 new这个在堆内存里面
一个是xyz 这个东西是在常量池的
回复 使用道具 举报
new String(“xyz”)的时候首先查看常量池中是否有字符串''xyz"若没有的话就现在常量池中创建"abc",接着在堆内存中创建一个对象,注意这个对象和常量池中的"xyz"是没有关系的,因此此时有两个对象。
如果在一开始检测常量池中已有对象"xyz",则不在创建,只在堆内存创建对象,也就是说下面要是还有一句
String s1 = new String("xyz")的话,只有一个对象。
回复 使用道具 举报
楼主高人啊是
回复 使用道具 举报
总共创建了两个对象
new String("xyz");是在字符串常量池中创建了一个xyz的对象
String s = new String("xyz");是创建了一个s对象,把s对象指向了堆内存中,在堆内存中开辟一块空间,指向常量池中xyz数据。
所以所是创建了两个对象,一个是xyz,一个是s


回复 使用道具 举报
代码意思等于。String s =new String();String s=“xyz”;这样总能看出来了吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马