String s1=new String("abcd");
s2=s1.intern();
据说intern()
将在池中创建一个字符串文字(如果它尚不存在)。
我的问题是这种情况何时会出现字符串对象而不是文字?而intern()必须实际去创建一个新的文字,然后返回对文字的引用。
答案 0 :(得分:2)
例如:
String first = "ab";
String second = "cd";
String interned = first.concat(second).intern();
程序中的大多数字符串都是动态创建的:通过连接值,通过套接字接收它们,从文件或数据库中读取它们,或从控制台或GUI中读取它们。
请注意,您的术语是错误的。 intern()
不会创建String文字。它向池中添加了一个String,并且字符串文字(即在字节代码中出现字面意思的字符串,如"abcd"
)存储在池中,以及明确的实际字符串。