首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

[转]String str1=new String("abc")毕竟创建了几个对象

2012-12-28 
[转]String str1new String(abc)到底创建了几个对象?Stirng str1 new String(abc) //这个产生了2

[转]String str1=new String("abc")到底创建了几个对象?


Stirng str1 = new String("abc");
//这个产生了2个对象,一个是new关键字创建的new Sring();另一个是“abc”对象,abc在一个字符串池中str1这个对象指向这个串池
String str2 = "abc"; //此处没有创建新的对象,故运行到此还是2个对象,首先没new,另外它会去看字符串池中有没有相同的字符,如果有则str2直接指向abc,如果不是abc,而是xyz的话则又创建了一个对象
Stirng str3 = new String("abc");//如果不看前面的,光看这一行本身也是创建了2个对象,但abc在字符串池里已经有了,所以结合前面的就创建了1个对象new Sring();
所以总共创建了3个对象
解释下字符串池:他是一个由字符组成的一个数组就相当于char str1 =new char[]{a,b,c};
如果不是遇到新的字符串,则直接指向原来的串池,如果遇到新的字符串则创建一个新的串池,个人以为因为java基本类型中中没有String类型,所以当出现新的字符串的时候需要以上面char 类型来创建一个数组对象。

热点排行