您的位置:首页 > 其它

String类创建对象

2014-11-25 21:40 218 查看
String s = new String("abc");为什么创建了两个字符串对象

abc 是字符串的常量
出现“abc”
就在内存中创建了这个字符串
把它用new关键字给了s时
等于是创建一个新的对象s
所以是两个对象
如果你接着写
String a=new String("abc");
a就是第三个对象
字符串常量"abc"会长存与内存
直到程序结束


关于本题首先需要明确下面的知识点:
1、引用变量与对象的区别;
2、字符串文字"abc"是一个String对象; 
3、文字池(pool of literal strings)和堆(heap)中的字符串对象。
由于字符串对象的大量使用(它是一个对象,一般而言对象总是在heap分配内存),Java中为了节省内存空间和运行时间,在编译阶段就把所有的字符串文字放到一个文字池(pool of literal strings)中,而运行时文字池成为常量池的一部分。文字池的好处,就是该池中所有相同的字符串常量被合并,只占用一个空间。

就本题而言对于s,对其定义时pool中没有"abc",String s=new String("abc")会先后在pool中和heap中定义"abc",
所以它创建了两个对象;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string类