你好我想知道用这个数组创建了多少个对象?
String arr[] = {"Paul", "Steven", "Jennifer", "Bart"};
提前致谢!
答案 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将创建六个对象,堆上有五个整数和一个数组对象。