黑马程序员技术交流社区

标题: 一道面试题答案让小沈阳产生了迷惑 [打印本页]

作者: 杨志罡    时间: 2011-7-21 16:47
标题: 一道面试题答案让小沈阳产生了迷惑
看了一个道面试题上面说 String str = newString("abc");产生了两个新对象,小沈阳说“这是为什么呢?”
[ 本帖最后由 杨志罡 于 2011-07-21  16:48 编辑 ]
作者: 匿名    时间: 2011-7-21 16:52
语句“String str = newString("abc");”
第一对象:在String构造方法里的常量“abc”  。
第二个对象:str 。
作者: 匿名    时间: 2011-7-21 16:56
豁然开朗  貌似一些材料上在解释这个问题时候把 堆和栈 都整出来了,还说道在栈中存在字符串池,有字符串怎么样,没字符串怎么样的很复杂很麻烦的,有待于参加黑马程序员,请教老师详细讲解
作者: lvwenwen88    时间: 2012-1-4 22:52
有两个对象
1.abc 是一个对象
2.new String("abc") 是一个对象,他的引用是str
作者: 小黑马    时间: 2012-2-8 11:12
两个对象是对的,这个就不再说了。

第一个是"abc", 它存贮在字符串常量缓冲区中 也叫data segment 中
如果存在连个 引用    String s1 ="abc" ,String s2 ="abc" 在内存中实际上是都指向同一个字符串常量。

第二个是 new出来的这个对象 存储在堆空间中。

想要学的透彻必须要详细的知道代码是存贮在哪块内才当中,在找工作笔试的时候体现出很大的作用。




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