MyException - 我的异常网
当前位置:我的异常网» J2SE » JAVA面试例题惑系列(二)——到底创建了几个String

JAVA面试例题惑系列(二)——到底创建了几个String对象(3)

www.MyException.Cn  网友分享于:2013-12-23  浏览:16次

------解决方案--------------------
如果:String str="hello";String str1=str+"";
那么str1所产生的新对象不会被加入字符串池中
这样说对吗?
------解决方案--------------------
只有使用引号包含文本的方式创建的String对象之间使用“+”连接产生的新对象才会被加入字符串池中。
对于所有包含new方式新建对象(包括null)的“+”连接表达式,它所产生的新对象都不会被加入字符串池中。
学习了,呵呵!

------解决方案--------------------
"当执行String a="abc";时,JAVA虚拟机会在栈中创建三个char型的值'a'、'b'和'c',然后在堆中创建一个String对象,它的值(value)是刚才在栈中创建的三个char型值组成的数组{'a','b','c'},最后这个新创建的String对象会被添加到字符串池中。"

这个还有一种说法:
当执行String a="abc";时,会在字符串池中查找"abc",如果找到了,就返回池中对象的引用。找不到则在池中创建"abc",并返回其引用,而堆中没有创建对象。

哪种说法正确啊?晕了。。。

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有