美文网首页
字符串常量池,运行时常量池,静态常量池

字符串常量池,运行时常量池,静态常量池

作者: wbpailxt | 来源:发表于2021-05-04 02:15 被阅读0次
    package string;
    
    public class StringInternMethodPractice1 {
        public static void main(String[] args) {
            StringBuilder stringBuilder2 = new StringBuilder("计算机软件");
            String str2 = stringBuilder2.toString();
            String str3 = str2.intern();
            // 加载这个类的时候,Class文件中的常量池加载到运行时常量池,运行时常量池有”计算机软件“这个常量(以char数组的形式存在)
            // 然后会在堆中生成一个字符串对象,字符串对象中的char数组指向运行时常量池中的”计算机软件“
            // 最后在字符串常量池记录一下这个字符串对象的引用
            // 调用str2.intern()方法时,会首先判断str2指向的字符串对象里的字符串是否首次出现在运行时常量池
            // 这里非首次出现,所以会将字符串常量池中记录的引用返回给str3
            // 虽然str3和str2指向的字符串对象都是在堆上,但是并非同一个对象,所以比较为false
            System.out.println(str3 == str2);
        }
    }
    

    图示解析


    字符串常量池,运行时常量池,静态常量池.png

    相关文章

      网友评论

          本文标题:字符串常量池,运行时常量池,静态常量池

          本文链接:https://www.haomeiwen.com/subject/xlzqdltx.html