请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于jdk6+intern方法的问题

String s = new String(“ss”);
s.intern();
请问老师,这两行执行的步骤是先在堆中创建了一个ss的对象,s的引用保存在栈中么?
之后调用intern时,发现堆中已经有这个对象,就把对象的引用复制到了常量池中,是这个逻辑么?

还有个问题,什么情况下会在常量池中直接创建对象,String s = "ss"这样么?

正在回答

2回答

同学好,第一行会在堆和常量池创建"ss",而s将堆引用保存在了栈中,s.intern()没有任何作用,因为ss已经在常量池存在;

String s = "ss" 是会在常量池中创建"ss"并返回对应的引用给s,保存在栈里

2 回复 有任何疑惑可以回复我~
NagiSaki 2019-02-21 17:04:44

https://img1.sycdn.imooc.com//szimg/5c6e69710001e11410820522.jpg

看看这张图能不能帮到你。

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号