当我们声明像
这样的字符串文字时String str = "abc";
在String池中只创建了一个对象。 但是当我们像
那样创建它时String str = new String("abc");
在String池中的其他堆内存中创建了2个对象。 当你已经有一个放在堆内存中的对象时,是什么意思在字符串池中创建一个条目?
答案 0 :(得分:1)
当你已经在堆内存中放置一个对象时,目的是在字符串池中创建一个条目
如果堆对象被垃圾收集并且再次需要new
,那么JVM可以指向池。
而且,对于String
,优先考虑文字而不是{{1}}。
请参阅:Why to create a String object using new
What is the purpose of the expression "new String(...)" in Java?