内存中的对象引用有点难理解
来源:6-12 Java内存模型之常考题解析-2
慕雪6307026
2019-07-27
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回答
-
同学好,你的这几点理解是ok的
012019-07-28
相似问题
关于活跃线程所引用的对象
回答 1
稀疏索引不理解
回答 1