简介

字符串常量池 & 堆内存中你是不是傻傻分不清楚
intern 方法你是不是傻傻分不清楚
简单来说, 存在一个如果字符串常量值中已经有了对象, 就

code

intern : 如果没有在字符串常量池中创建, 就会创建出一个

    public static void main(String[] args) {
        String a1 = "1";
        String b1 = "1";
        System.out.println(a1 == b1); // 预测值: true
        String a2 = new String("2");
        String b2 = new String("2");
        System.out.println(a2 == b2); // 预测值: false
        String a3 = new String("3");
        a3.intern();
        String b3 = "3";
        System.out.println(a3 == b3); // 预测值: false
        String a4 = new String("4");
        a4 = a4.intern();
        String b4 = "4";
        System.out.println(a4 == b4); // 预测值: true
        String a5 = "5";
        String b5 = new String("5");
        System.out.println(a5 == b5); // 预测值: false
        String a6 = new String("1") + new String("2");

        a6.intern(); // 当字符串常量池中没有这个对象的时候, a6会重新指向字符串常量池中
        String b6 = "12";
        // 当把 a6.intern(); 放在这里下面是false, 因为如果字符串常量池中已经有这个地址暂时不会更改a6地址
        System.out.println(a6 == b6); // 预测值: true
    }
posted on 2021-08-06 15:29  HDU李少帅  阅读(33)  评论(0编辑  收藏  举报