不同版本JDK之间的intern()方法的区别

1 篇文章 0 订阅

测试源码

    public static void main(String[] args) {
        String s = new String("a");
        s.intern();
        String s2 = "a";
        System.out.println(s == s2);

        String s3 = new String("a") + new String("a");
        s3.intern();
        String s4 = "aa";
        System.out.println(s3 == s4);
    }
JDK8:
false
true
--------------------------------------------------------
JDK6:
false
false

准备知识

不同JDK版本之前的intern()方法的区别-- JDK6 VS JDK6+

  • JDK6:当调用intern方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中的该字符串的引用。否则,将此字符串对象添加到字符串常量池中,并且返回该字符串对象的引用
  • JDK6+:当调用intern方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中的该对象的引用。否则,如果该字符串对象已经存在与java堆中,则将堆中对此对象的引用***添加***到字符串常量池中,并且返回该引用;如果堆中不存在,则创建该字符串并返回其引用。

不同版本JDK之间的intern()方法的区别 – JDK6

在这里插入图片描述

不同版本JDK之间的intern()方法的区别 – JDK7及以上

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值