“如果对c变量做intern,则是把c的字符串值添加到常量池并返回。” 关于这一点我感觉说的有问题,如果 c 调用 intern,通过实例的 equals(Object) 对池中的数据进行比较,如果字符串常量池中有与 c 内容相同的字符串,则直接返回该字符串,如果没有相同实例,jdk7+ 版本则会将 c 实例的引用保存到池中并返回。参考自 Java8API String intern。
new String的值是存储在堆中还是常量池呢?面试问:new String的值是存储在堆中还是常量池呢? 在Java中,我们知道new出来的对象会存储在堆中,那new String在JMM中是怎么存储的呢? 稍微有点基础...