关于jdk6+intern方法的问题

来源:6-11 Java内存模型之 常考题解析-1

qq_撞碎南墙_0

2019-02-19

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

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

写回答

2回答

翔仔

2019-02-20

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

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

2
1
qq_撞碎南墙_0
非常感谢!
2019-02-21
共1条回复

NagiSaki

2019-02-21

//img.mukewang.com/szimg/5c6e69710001e11410820522.jpg

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

1
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8442 学习 · 1872 问题

查看课程