请稍等 ...
×

采纳答案成功!

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

内存中的对象引用有点难理解

Q1:
String s1 = new String(“aa”);
String s2 = “aa”;
//s1==s2为false
是因为s1指向的是堆中的对象,而s2指向的是常量池中的"aa"吗?

Q2:
String s1 = new String(“a”) + new String(“a”);
String s2 = “aa”;
//s1==s2为false
是因为s1指向的是堆中的"aa"对象,而s2是指向的是常量池中的"aa"吗?

Q3: JDK6和JDK6+中intern()方法的区别, 可以这样理解吗?
JDK6: 对于某个字符串对象,如果之前在常量池中已存在该对象,执行intern()方法返回的是该对象在常量池中的副本。若不存在,则创建该字符串对象的副本,放入常量池中并返回。
JDK6+: 对于某个字符串对象,如果之前在常量池中已存在该对象,执行intern()方法返回的是该对象在常量池中的引用。若不存在,则在堆中寻找该对象的引用,找到就返回;找不到就在堆中创建该字符串对象,并将其引用放入常量池,然后返回。

正在回答

1回答

翔仔 2019-07-27 23:38:27

同学好,你的这几点理解是ok的

0 回复 有任何疑惑可以回复我~
  • 提问者 慕雪6307026 #1
    我觉得结合这3个例子,可以方便加深大家对字符串对象内存的理解
    回复 有任何疑惑可以回复我~ 2019-07-28 13:17:32
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

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

帮助反馈 APP下载

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

公众号

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