我们知道,String().intern()
方法会将字符串值添加到字符串池中,如果该值尚不存在。如果已存在,则返回该值/对象的引用。
String str = "Cat"; // creates new object in string pool with same character sequence.
String st1 = "Cat"; // has same reference of object in pool, just created in case of 'str'
str == str1 //that's returns true
String test = new String("dog");
test.intern();// what this line of code do behind the scene
当我调用test.intern()
时,这个intern方法会做什么呢?
是将"dog"添加到字符串池中的不同引用,还是将test
对象的引用添加到字符串池中(我认为后者不是这种情况)?
我尝试了一下:
String test1 = "dog";
test == test1 // returns false
我只想确认一下,当我调用test.intern()
时,它会在字符串池中创建一个具有相同值的新对象吗?现在我有两个值为"dog"的对象,一个存在于堆中,另一个存在于字符串池中?
str == str //that's returns true
打字错误? - jhamon