引用就是堆空间的内存首地址。==的作用就是比较首地址。String中的数组是final所以是不可分割的。
1.java7使用intern方法时,如果常量池中不存在该字符串,那么字符串常量池里面保存的是堆中对象;当常量池存在的时候,那么intern返回的就是常量池中保存的引用,如何实现字符串常量池的不可重复性?
答:
(1)两种情况StringTable保存的都是String的引用,对象仍然创建在堆空间中,只不过在java7之后 不会重复生成对象了。
(2)StringTable中的key就是不重复的,所以石祥路字符串常量的不可重复。
2.为什么要使用intern方法?intern方法结果是什么?intern方法如何实现的?
答:
(1)利用intern方法使运行中的进程可以将字符串添加到字符串常量池(因为一个进程的堆中30%空间存储的都是String对象,同时14.5%的String对象还是重复的