黑马程序员技术交流社区
标题:
String s = new String("xyz");创建了几个String Object?哪几个?
[打印本页]
作者:
黄成超
时间:
2013-1-29 16:44
标题:
String s = new String("xyz");创建了几个String Object?哪几个?
String s = new String("xyz");创建了几个String Object?哪几个?
作者:
黄金龙
时间:
2013-1-29 18:48
一共是2个
一个是 new这个在堆内存里面
一个是xyz 这个东西是在常量池的
作者:
冷延冰
时间:
2013-1-29 22:15
new String(“xyz”)的时候首先查看常量池中是否有字符串''xyz"若没有的话就现在常量池中创建"abc",接着在堆内存中创建一个对象,注意这个对象和常量池中的"xyz"是没有关系的,因此此时有两个对象。
如果在一开始检测常量池中已有对象"xyz",则不在创建,只在堆内存创建对象,也就是说下面要是还有一句
String s1 = new String("xyz")的话,只有一个对象。
作者:
杨杨
时间:
2013-1-30 10:50
楼主高人啊是
作者:
张敬培
时间:
2013-1-30 11:05
总共创建了两个对象
new String("xyz");是在字符串常量池中创建了一个xyz的对象
String s = new String("xyz");是创建了一个s对象,把s对象指向了堆内存中,在堆内存中开辟一块空间,指向常量池中xyz数据。
所以所是创建了两个对象,一个是xyz,一个是s
作者:
念满
时间:
2013-1-30 21:36
String s = new String("xyz");
先要明白字符串存在常量池中,即存在方法区里;方法区里包含的都是在整个程序中永远唯一的元素;
这就很好理解了若常量池已经有"xyz"对象,就不创建,没有就创建"xyz"对象.
但是肯定有一个new String("xyz")对象存在堆内存里面,并且s指向这个对象,这根new 别的类一样,对象都存在堆内存中
作者:
钱志新
时间:
2013-1-31 00:58
代码意思等于。String s =new String();String s=“xyz”;这样总能看出来了吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2