黑马程序员技术交流社区
标题:
为什么说String s=new String("abc")在内存中有两个对象?
[打印本页]
作者:
李哲
时间:
2012-3-15 09:11
标题:
为什么说String s=new String("abc")在内存中有两个对象?
教程没有详细说明,大家知道吗?
作者:
黑马肖凯骏
时间:
2012-3-15 09:14
String 本身是一个类,所以String="abc"开辟了一个空间 当使用new语句的话,就会再开辟一个空间
字符串本身会占用一个空间
作者:
张润政
时间:
2012-3-15 09:30
这条语句,使用了一个带有String类型参数的构造函数String(String original)
初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。
既然是副本,那就相当于克隆了一个。。
它相当于。String str = null; String s1 = “abc“; str = new String(s1);
看清楚了吗,这里边存在两个对象:一个是str,一个是s1。
作者:
djx900
时间:
2012-3-15 09:31
abc是一个 new 就是又1个
作者:
李深山
时间:
2012-3-15 09:41
String有个构造器,返回的是String对象;“abc”本身是一个String对象,构造出来的是这个String对象的副本。
public String(String original)初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。由于 String 是不可变的,所以无需使用此构造方法,除非需要 original 的显式副本。
作者:
张华廷
时间:
2012-3-15 09:46
String 本身是一个类, 当使用new语句的话,就会开辟一个空间字符串会占用一个空间,string="abc"又开辟一个空间字符串,所以会出现两个对象。
作者:
孙地豪
时间:
2012-3-15 09:59
1. "abc"本身就是一个直接常量 所有在把他存在内存数据区中
2. new String("abc") 在堆内存中;
作者:
liumeng
时间:
2012-3-15 11:04
str="abc"不是加到字符串常量池中么 如果有“abc”则使用常量池中的,否则,创建一字符串 “abc” 我想应该加的内存中把
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2