您的位置:首页 > 其它

String中intern的方法

2014-10-19 16:44 197 查看
/article/7027389.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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: