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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

String str = "abc";
String str1 = new String(str);
String str2 = str1;

一直没搞明白,上面这段代码究竟创建了几个对象,求各位老师解惑!!!!!

5 个回复

倒序浏览
一共创建了三个
回复 使用道具 举报
错了,一共创建了两个
回复 使用道具 举报
1312564637 发表于 2015-10-14 13:26
错了,一共创建了两个

能说明详细一点嘛,分别是在哪儿创建的嘛,谢谢学姐
回复 使用道具 举报
一共创建了两个对象
1、String str = "abc";
先在栈中创建一个对String类的对象引用变量str,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str指向”abc”,如果已经有”abc” 则直接令str指向“abc”。
2、String str1 = new String(str);
它会在存放于堆中。每调用一次就会创建一个新的对象。
3、String str2 = str1;
指向str1创建的对象

可以自己用代码测试一下{:3_53:}
回复 使用道具 举报 1 0
一共就创建了2个,第一个是 String str = "abc"; 因为内存中没有“abc”就相当于String str = new String(“abc”); 第二个String str1 = new String(str);,这种写法是肯定对创建一个新的对象的,第三个就是str2引用了str1的地址值
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马