使用数组创建了多少个对象? 【JAVA]

时间:2011-05-05 05:07:16

标签: java arrays oop object

你好我想知道用这个数组创建了多少个对象?

String arr[] = {"Paul", "Steven", "Jennifer", "Bart"};

提前致谢!

6 个答案:

答案 0 :(得分:11)

创建了九个对象。

每个String都是两个对象。 String引用和String的底层char[]。所以对于4个字符串,这是8个对象。

然后,String[]本身共有9个。

这当然假设JVM还没有intern()编辑字符串文字。如果有,则不会创建String,而是从intern池中提取它,这可能会给您总共1,3,5,7或创建的原始9个对象,取决于String编辑intern的次数。{/ p>

答案 1 :(得分:2)

String arr[] = {"Paul", "Steven", "Jennifer", "Bart"};
for (Object o : arr) {
   System.out.format("%d\n", o.hashCode());
}
System.out.format("%d\n", arr);

你应该得到5个不同的hashCode。强烈建议你的堆中现在有5个对象。

答案 2 :(得分:2)

取决于JVM实现和状态,介于1和5之间。显然创建了一个新的String数组,字符串 - 我们不知道。

编辑:有人在其他答案中指出。 1-9将是一个更精确的答案。因为你在构造String时在String中创建了一个char []。

答案 3 :(得分:1)

答案是否定的,因为Array无法创建对象,只有new可以。 :P

答案 4 :(得分:1)

根据您的观察方式,您可以说9个对象或只有一个。如果在调试器中查看此数组,您将能够在char []中看到9个对象,数组,String对象和char []。

但是字符串文字在池中并且不是每次都创建(只有一次)因此,如果多次运行此行,则每次只创建数组。即只创建一个额外的对象。

答案 5 :(得分:0)

HI,

创建了五个对象。

如果您正在使用

int[] i = new int[5];

然后jvm将在堆上创建一个对象。

但是如果要为数组提供元素,例如

i[0] = 1;
i[1] = 2;
.
.
i[4] = 5;

然后jvm将创建六个对象,堆上有五个整数和一个数组对象。