JAVA:将创建多少个对象?为什么呢?

时间:2015-10-01 10:55:26

标签: java string heap string-pool

我正在进行SCJP考试,并在一本书中找到了一行。

String s = new String("abc");

据说,将在上面创建两个对象。一个位于HEAP,一个位于STRING POOL

我对那里的声明不满意。有人能让我理解为什么要创建两个对象吗?

提前致谢。

4 个答案:

答案 0 :(得分:4)

作者是对的。当你使用String literal时,该文字首先进入常量池。

因此" abc"在恒定的池中创建。

当您使用新的关键字时,会在堆上创建一个名为s的新对象。

答案 1 :(得分:2)

创建文本"abc"并实习("字符串池")。

new运算符将创建一个未被实习的新String

答案 2 :(得分:1)

作者是对的:

  • 将在字符串池中为" abc"创建一个对象。文字;和
  • 将在堆上为新String(...)
  • 创建另一个对象

答案 3 :(得分:1)

对象1 - "abc"

对象2 - new String("abc")