黑马程序员技术交流社区
标题:
一道面试题答案让小沈阳产生了迷惑
[打印本页]
作者:
杨志罡
时间:
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