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

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

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

4

1 回答 1

2

例如:

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

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

请注意,您的术语是错误的。intern()不创建字符串文字。它将一个字符串添加到池中,并且字符串文字(即在字节码中逐字"abcd"出现的字符串,如),连同显式实习字符串一起存储在池中。

于 2016-04-15T21:45:12.177 回答