String和常量池

6 篇文章 0 订阅

查看常量池方法,在终端中输入,其中test为类名

javap -verbose test

上述命令看到的内容解析:https://www.cnblogs.com/qingfengyiran-top1/p/11300654.html

  • 直接使用双引号声明出来的 String 对象会直接存储在常量池中。
  • 如果不是用双引号声明的 String 对象,可以使用 String 提供的 intern 方法。String.intern() 是一个 Native 方法,它的作用是:如果运行时常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用;如果没有,则在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用。
        String aa = "AA";//设置常量AA到常量池
        String bb = "BB";//设置常量BB到常量池
        String ccdd = "CC"+"DD";//设置常量CCDD到常量池
        String neeff = new String("EE")+new String("FF");//设置EE和FF到常量池。并且添加EE、FF和EEFF对象到堆
        String aabb = aa+bb;//添加AABB对象到堆
        String gghh = "GG"+new String("HH");//设置GG和HH常量到常量池,设置HH和GGHH对象到堆
//         aa.intern();//啥事都不做,返回AA常量
//         ccdd.intern();//啥事都不做,返回CCDD常量
//         neeff.intern();//添加EEFF对象的引用到常量池,并返回EEFF对象
//         aabb.intern();//添加AABB对象的引用到常量池,并返回AABB对象
//         gghh.intern();//添加GGHH对象的引用到常量池,并返回GGHH对象
        System.out.println(aa.intern()==aa); //true
        System.out.println(neeff.intern()=="EEFF");//true
        System.out.println("EEFF"==neeff);//true
        String nccdd = new String("CCDD");
        System.out.println(ccdd==nccdd);//false
        System.out.println(ccdd==nccdd.intern());//true
        System.out.println(aabb.intern()==aabb);//true
        System.out.println(gghh==gghh.intern());//true

上述代码来源:https://www.cnblogs.com/lukelook/p/10894481.html

 

8种基本类型的包装类和常量池

参考:

  1. https://www.cnblogs.com/lukelook/p/10894481.html
  2. https://github.com/Snailclimb/JavaGuide/blob/3965c02cc0f294b0bd3580df4868d5e396959e2e/Java%E7%9B%B8%E5%85%B3/%E5%8F%AF%E8%83%BD%E6%98%AF%E6%8A%8AJava%E5%86%85%E5%AD%98%E5%8C%BA%E5%9F%9F%E8%AE%B2%E7%9A%84%E6%9C%80%E6%B8%85%E6%A5%9A%E7%9A%84%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0.md#string-%E7%B1%BB%E5%92%8C%E5%B8%B8%E9%87%8F%E6%B1%A0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值