String中intern的方法

http://www.cnblogs.com/wanlipeng/archive/2010/10/21/1857513.html

从上面文章来看,String中intern()返回字符池中原与字符串值相等的引用

那么什么时候从字符串池取值呢?

从上面的文章可以知道

字符串相加的时候,都是静态字符串的结果会添加到字符串池,如果其中含有变量(如f中的e)则不会进入字符串池中。但是字符串一旦进入字符串池中,就会先查找池中有无此对象。如果有此对象,则让对象引用指向此对象。如果无此对象,则先创建此对象,再让对象引用指向此对象

如果不是静态字符串,则返回的不是字符串池中的引用

 public static void main(String[] args) { 
        String str1 = "a"; 
        String str2 = "a"; 
        String str3 = new String("a"); 
        String str4="ab";
        String str5="b";
        String str6="a"+str5;
        String str7="a"+"b";
        String str8=new String("ab");
        System.out.println(str7==str4);//true,都是字符串池中的引用
        System.out.println(str4==str6);//str6不是字符串池中的引用
        System.out.println(str4==str6.intern());//true
        System.out.println(str8.intern()==str6);//str6返回的不是字符串池中的引用,str8是字符串池中的引用
        System.err.println(str1 == str2); //true
        System.err.println(str1 == str3);  //false
        str3 = str3.intern(); 
        System.err.println(str1 == str3);  //true
    } 
      

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值