黑马程序员技术交流社区

标题: String 的一个问题 [打印本页]

作者: 刘永昌    时间: 2011-11-1 20:31
标题: String 的一个问题
请问,String s=new String("abc");这一语句创建了几个String Object?

作者: 白倩    时间: 2011-11-1 20:41
它创建了两个对象,使用String s = "abc ";的方式,可以在一定程度上提高程序的运行速度,因为JVM会自动根据栈中数据的实际情况来决定是否有必要创建新对象。而对于String s= new String( "abc ");的代码,则一概在堆中创建新对象,而不管其字符串值是否相等,是否有必要创建新对象,从而加重了程序的负担;我觉得这个思想应该是享元模式的思想!
作者: 罗亚东    时间: 2011-11-1 20:53
产生了2个对象,一个是new关键字创建的new Sring();另一个是“abc”对象。
作者: qy    时间: 2011-11-1 20:57
它创建了两个对象,当声明变量时在内存中分了一块儿内存;当的时候在内存中又申请了一块儿地方。一般情况下不会这样声明变量,浪费空间。
作者: 张邦庆    时间: 2011-11-1 21:05
创建两个对象,new一个对象,其中不会在堆中检查是否已经有了“abc”,都指向s的引用
作者: 刘永昌    时间: 2011-11-1 21:23
{:soso__13536825609516477777_4:}懂了,谢大家哈
一个是堆内存的String类的实例对象,一个是栈内存里指向堆内存实例对象的引用对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2