intern() 是否曾经在池中创建文字?
Does intern() ever create a literal in the pool?
String s1=new String("abcd");
s2=s1.intern();
据说 intern()
将在池中创建一个字符串文字,如果它不存在的话。
我的问题是什么时候会出现字符串对象存在但文字不存在的情况?而 intern() 将不得不实际去创建一个新的文字,然后 return 对文字的引用。
例如:
String first = "ab";
String second = "cd";
String interned = first.concat(second).intern();
程序中的大多数字符串都是动态创建的:通过连接值、通过套接字接收它们、从文件或数据库、或者从控制台或 GUI 读取它们。
请注意,您的术语有误。 intern()
不创建字符串文字。它将一个字符串添加到池中,字符串字面量(即在字节码中 字面 出现的字符串,如 "abcd"
)存储在池中,并显式驻留字符串。
String s1=new String("abcd");
s2=s1.intern();
据说 intern()
将在池中创建一个字符串文字,如果它不存在的话。
我的问题是什么时候会出现字符串对象存在但文字不存在的情况?而 intern() 将不得不实际去创建一个新的文字,然后 return 对文字的引用。
例如:
String first = "ab";
String second = "cd";
String interned = first.concat(second).intern();
程序中的大多数字符串都是动态创建的:通过连接值、通过套接字接收它们、从文件或数据库、或者从控制台或 GUI 读取它们。
请注意,您的术语有误。 intern()
不创建字符串文字。它将一个字符串添加到池中,字符串字面量(即在字节码中 字面 出现的字符串,如 "abcd"
)存储在池中,并显式驻留字符串。