在String literal和new String Object之间创建了多少个对象

时间:2016-06-10 04:22:28

标签: java string-literals

我在以下示例中感到困惑。我想知道在运行此代码后将在内存中创建多少个对象。请尽可能详细说明。

String firstName= "Mr.Z";
String secondName= firstName + "Beyond";
String thirdName= secondName + "Plus";
String newName= new String("Mr.Z");

1 个答案:

答案 0 :(得分:2)

下面的链接应该清楚你对字符串文字和字符串对象创建概念的所有怀疑。

http://www.javaranch.com/journal/200409/ScjpTipLine-StringsLiterally.html

  

使用String Literal创建String时,将在堆上创建对象,并且对该对象的引用将存储在String Constant Pool中。此后,对该字符串文字的任何引用都不会创建新对象,但会返回字符串常量池中的引用。   使用 new 关键字创建String对象时,将在堆上创建对象,但不会在String Constant Pool中存储任何引用。

     

在你的情况下:    应在堆上创建4个对象,但只有前三个对象的引用将存储在字符串常量池中。   使用 new 关键字创建的对象不会将其引用存储在字符串常量池