黑马程序员技术交流社区
标题:
如下一段代码,究竟创建了几个对象?求科普
[打印本页]
作者:
primeget
时间:
2015-10-14 13:08
标题:
如下一段代码,究竟创建了几个对象?求科普
String str = "abc";
String str1 = new String(str);
String str2 = str1;
一直没搞明白,上面这段代码究竟创建了几个对象,求各位老师解惑!!!!!
作者:
1312564637
时间:
2015-10-14 13:25
一共创建了三个
作者:
1312564637
时间:
2015-10-14 13:26
错了,一共创建了两个
作者:
primeget
时间:
2015-10-14 14:17
1312564637 发表于 2015-10-14 13:26
错了,一共创建了两个
能说明详细一点嘛,分别是在哪儿创建的嘛,谢谢学姐
作者:
耀阳圣尊
时间:
2015-10-14 15:29
一共创建了两个对象
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:}
作者:
didixyy
时间:
2015-10-14 15:39
一共就创建了2个,第一个是 String str = "abc"; 因为内存中没有“abc”就相当于String str = new String(“abc”); 第二个String str1 = new String(str);,这种写法是肯定对创建一个新的对象的,第三个就是str2引用了str1的地址值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2