当前位置 博文首页 > ZCC的专栏:深入解析String的intern方法

    ZCC的专栏:深入解析String的intern方法

    作者:[db:作者] 时间:2021-08-02 12:34

    转载出处
    在 JAVA 语言中有8中基本类型和一种比较特殊的类型String。这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念。常量池就类似一个JAVA系统级别提供的缓存。

    8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊。它的主要使用方法有两种:
    (1)直接使用双引号声明出来的String对象会直接存储在常量池中。
    (2)如果不是用双引号声明的String对象,可以使用String提供的intern方法。intern 方法会从字符串常量池中查询当前字符串是否存在,若不存在就会将当前字符串放入常量池中
    情景一:

    public static void main(String[] args) {
        String s = new String("1");
        s.intern();
        String s2 = "1";
        System.out.println(s == s2);
    
        String s3 = new String("1") + new String("1");
        s3.intern();
        String s4 = "11";
        System.out.println(s3 == s4);
    }

    打印结果:

    dk6 下false false
    jdk7 下false true

    情景二:

    public static void main(String[] args) {
        String s = new String("1");
        String s2 = "1";
        s.intern();
        System.out.println(s == s2);
    
        String s3 = new String("1") + new String("1");
        String s4 = "11";
        s3.intern();
        System.out.println(s3 == s4);
    }

    打印结果:

    jdk6 下false false
    jdk7 下false false
    cs