关于String字符串池

我们知道相同字符串值的对象,java不会创建不同的对象,而是共用!具体共用,参照native 方法 String.intern().

public native String intern();

具体请看我的demo

public class Test {
    private static final String finalField = "a";
    private static final String finalFieldB = "a";

    public static void main(String[] args) {
        String strA = "a";  // a
        System.out.println(strA.intern()); //a
        System.out.println(finalField == strA); // true
        System.out.println(finalField == finalFieldB); // true

        System.out.println(strA == "a"); //true
        System.out.println(strA == "a".intern()); //true
        System.out.println(strA == strA.intern()); //true, strA refer to strA.intern()

        String strB = "a";
        System.out.println(strB.intern());
        System.out.println(strA == strB); // both strA and strB refer to strA.intern()
        System.out.println(strA.intern() == strB.intern());

        String strC = new String("a");
        System.out.println("strC = " + strC);
        System.out.println(strA == strC); //false , different reference
        System.out.println(strA.intern() == strC.intern());//true , different reference but with same intern
    }

}

说明:
声明变量的时候直接赋值, 这个变量直接引用这个对象的intern()返回的对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值