intern()是否曾在池中创建文字?

时间:2016-04-15 21:40:30

标签: java string string-literals string-interning

String s1=new String("abcd");
s2=s1.intern();

据说intern()将在池中创建一个字符串文字(如果它尚不存在)。

我的问题是这种情况何时会出现字符串对象而不是文字?而intern()必须实际去创建一个新的文字,然后返回对文字的引用。

1 个答案:

答案 0 :(得分:2)

例如:

String first = "ab";
String second = "cd";
String interned = first.concat(second).intern();

程序中的大多数字符串都是动态创建的:通过连接值,通过套接字接收它们,从文件或数据库中读取它们,或从控制台或GUI中读取它们。

请注意,您的术语是错误的。 intern()不会创建String文字。它向池中添加了一个String,并且字符串文字(即在字节代码中出现字面意思的字符串,如"abcd")存储在池中,以及明确的实际字符串。