在java中声明String时的对象创建

时间:2016-12-14 10:12:14

标签: java string declaration

当我们声明像

这样的字符串文字时
String str = "abc";

在String池中只创建了一个对象。 但是当我们像

那样创建它时
String str = new String("abc"); 

在String池中的其他堆内存中创建了2个对象。  当你已经有一个放在堆内存中的对象时,是什么意思在字符串池中创建一个条目?

1 个答案:

答案 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?