1

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

String s = new String("abc");

上面写着,将在上面一行创建两个对象。一对一。HEAP_STRING POOL

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

提前致谢。

4

4 回答 4

4

作者是对的。当您使用字符串文字时,该文字首先会进入常量池。

因此在常量池中创建了“abc”。

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

于 2015-10-01T10:58:03.323 回答
2

文字"abc"被创建和实习(“字符串池”)。

操作员将new创建一个String未实习的新的。

于 2015-10-01T10:58:09.643 回答
1

对象 1 -"abc"

对象 2 -new String("abc")

于 2015-10-01T11:00:22.660 回答
1

作者是对的:

  • 将在字符串池中为“abc”字面量创建一个对象;和
  • 将在堆上为 new String(...) 创建另一个对象
于 2015-10-01T10:59:09.250 回答