黑马程序员技术交流社区
标题:
String s=new String("abc"); new了几个对象
[打印本页]
作者:
杨永峰
时间:
2012-5-27 21:08
标题:
String s=new String("abc"); new了几个对象
本帖最后由 杨永峰 于 2012-5-27 21:32 编辑
如题:String str =new String("string"); new了几个对象??
—— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— —— ——
补问:String str="string"; 创建了几个对象??
————————————————————
String str_1 = "string";
String str_2 = "string"; ///以上两行代码创建了几个对象?
复制代码
String str = "str" + "ing";///以上一行代码创建了几个对象?
复制代码
作者:
邹颖
时间:
2012-5-27 21:21
new 了一个对象. .
因为“String” 是在常量池中产生了一个常量字符串对象, 不是通过new出来的。 所以真正在堆内存中new出来的只有一个对象,
只不过是将常量池中的String字符串拷贝到了堆内存上。
作者:
钟成军
时间:
2012-5-27 21:25
只new 了一个字符串常量
作者:
陆建平
时间:
2012-5-27 21:31
Stirng str1 = new String("string");
//这个产生了2个对象,一个是new关键字创建的new Sring();另一个是“string”对象,abc在一个字符串池中str1这个对象指向这个串池
解释下字符串池:他是一个由字符组成的一个数组就相当于char str1 =new char[]{a,b,c};
如果不是遇到新的字符串,则直接指向原来的串池,如果遇到新的字符串则创建一个新的串池,个人以为因为java基本类型中中没有String类型,所以当出现新的字符串的时候需要以上面char 类型来创建一个数组对象。
作者:
安浦鑫
时间:
2012-5-27 21:37
你是要问创建了几个新对象么
创建了2个对象
常量池中一个字符串对象"string"
而在执行new String("string")的时候,则将"string"作为参数传递给构造函数String(String original)
在堆内存中产生了一个新的字符串对象
并且把这个对象的地址赋给了str
所以一共创建了2个对象
附:
String(String original)
初始化一个新创建的 String 对象,使其表示一个与参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的副本。
作者:
徐炯
时间:
2012-5-27 22:29
String str_1 = "string";
先检查堆内存中是否存在“string”,如果存在,则将“string”所对应的堆内存地址赋值给str_1,
如果不存在,则在栈内存中创建“string”变量,在堆内存中创建“string”对象,
String str_2 = "string";
同理如上,这时会将String str_1 = "string";创建的对象地址赋值给str_2,
String str = "str" + "ing";
只是进行简单的字符串相加,可以理解为String str = "string";
作者:
王月
时间:
2012-5-27 23:26
本帖最后由 王月 于 2012-5-27 23:27 编辑
是产生了两个对象,new出来一个,常量池中还有一个。
1. new出来的对象在栈内存中。
2."String"这也是个对象,但在常量池里。
String s="string";
这个语句只创建了一个对象,而且存在于常量池中
作者:
路冬冬
时间:
2012-5-27 23:37
String str =new String("string");创建了两个对象,字符串"string"是一个对象,new的String类的str是一个对象,
String str="string";创建了一个对象"string"产生后就直接赋给了str。
作者:
路冬冬
时间:
2012-5-27 23:38
String str =new String("string");创建了两个对象,字符串"string"是一个对象,new的String类的str是一个对象,
String str="string";创建了一个对象"string"产生后就直接赋给了str。
作者:
初艳春
时间:
2012-11-10 11:20
"abc"这个常量字符串是一个匿名的string对象,通过new string()操作又创建了一个对"abc"这个匿名对象的引用s,所以是两个对象
作者:
马纵驰
时间:
2012-11-12 22:54
1问
new 了一个对象。
2问
没有创建对象
作者:
酸溜溜
时间:
2012-12-26 16:17
只不过是将常量池中的String字符串拷贝到了堆内存上。
作者:
焦健
时间:
2013-2-25 21:21
学习学习
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2