在JAVA中仅使用“new”运算符时将创建多少个对象?

时间:2014-08-11 05:27:24

标签: java new-operator

我已阅读文档,但有些人说它创建了两个对象,有些人说它只创建了一个对象。

在采访中,这些事情经常被问到,我不知道该说什么,并解释我是如何得到答案的。

当我们只写这个语句时,会创建多少String个对象?

public class Test123 {
    String st = new String();
}

4 个答案:

答案 0 :(得分:5)

使用

创建String对象时
String s = new String(“xyz”) it will create two objects.
  1. 第一个对象将在java永久堆内存中创建,作为我们传递的参数的一部分 - " XYZ" 。它将在String Literal Pool中创建
  2. 第二个对象将在创建 - 将作为new运算符的一部分创建。

答案 1 :(得分:4)

零。仅在创建st的实例时才会分配Test123,并且不执行任何操作。

答案 2 :(得分:1)

它与字符串文字无关。 new的每次调用都会在堆上创建一个新对象。

当您执行以下操作时:

String st = "something";

字符串“something”在String-pool中查找,如果它不存在 - 它将被添加到池中,并将返回对它的引用。如果它已经存在 - 将返回对它的引用。 这与new关键字无关,并且没有任何方案,您可以使用单个new命令创建两个字符串。

答案 3 :(得分:0)

new操作仅创建一个对象

但它的参数是String,它已代表object。因此,只要您使用String,就会隐式创建object