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",
所以它创建了两个对象;
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",
所以它创建了两个对象;
相关文章推荐
- 字符串与正则表达式1、字符串 String类对象是不可改变的,对于String对象的重新赋值在本质上是重新创建了一个String对象并将新值赋予该对象,其方法ToString对性能的提高并非很显著。
- String类是不可改变的,所以你一旦创建了String对象,那它的值就无法改变了。
- 第十八章 29创建可自动调节大小的string类字符串对象
- 用string类构造器创建对象
- String类对象两种创建方法的区别
- Java中String类创建对象内存分析
- String类是不可改变的,所以你一旦创建了String对象,那它的值就无法改变了。
- java中string类创建对象
- java中String类与变量相加解释一旦创建了String对象,那它的值就无法改变了
- 字符串的定义 String类创建的对象
- Automation服务器不能创建对象
- Xml HandOn Practice (02) 创建一个Xml Dom对象
- ASP.NET在Windows2003下创建excel对象时,系统提示拒绝访问objApp = new Excel.Application() 出错
- VB连接数据库时出现“ActiveX部件不能创建对象”
- 创建智能网络蜘蛛——如何使用Java网络对象和HTML对象(翻译)
- 解决Automation 服务器不能创建对象
- 创建IXMLDOMDocument对象的三种方法
- 使用 JDBC 创建数据库对象
- 动态2:由类名创建对象
- 使用 JDBC 创建数据库对象