关于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回答
-
同学好,第一行会在堆和常量池创建"ss",而s将堆引用保存在了栈中,s.intern()没有任何作用,因为ss已经在常量池存在;
String s = "ss" 是会在常量池中创建"ss"并返回对应的引用给s,保存在栈里
212019-02-21 -
NagiSaki
2019-02-21
看看这张图能不能帮到你。
10
相似问题