A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 依然超级赛亚人   /  2014-7-19 16:38  /  3092 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

as_heima 发表于 2014-7-20 09:30
String str =new String("abc");按我目前学习到的,这个是在堆中开辟个空间,然后去常量池里找有没有"abc ...

常量池中没有的话就在堆中存储吗?总是感觉有些不对劲。还有,您说常量池也在栈中?恕我有所怀疑,当时老师好像没有这样讲过(常量池好像在方法区),您能给一些具有说服性的参考资料吗?
回复 使用道具 举报
DSY 中级黑马 2014-7-20 23:19:37
22#
依然超级赛亚人 发表于 2014-7-19 22:20
嗯....恕我不敢苟同您的意见,经过前面的一些回答,我也想起了一些东西,也感觉这以上这两种形式的创建方 ...

使用String a =new String("abc")会在栈区或者堆区创建一个新的字符常量,而第二句如果常量池中存在"abc"则不创建,否则就在常量池中创建一个“abc”,就是 使用new 一定会新建个对象
回复 使用道具 举报
依然超级赛亚人 发表于 2014-7-20 22:54
常量池中没有的话就在堆中存储吗?总是感觉有些不对劲。还有,您说常量池也在栈中?恕我有所怀疑,当时老 ...

http://zhidao.baidu.com/link?url=bUnvBfAva7feguKld-m0EUM3TVCaa48HnxOfqzVnG-DOtoTIeF3LGwNib91S_UQwBDlGbi4Vdku_7Wql0-TyQa
也不知道这个算不算、您瞧瞧吧~:)
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马