有人可以告诉我以下两个陈述之间的区别"引擎盖"?
int [] input = new int[] {1,2,3};
int [] input = {1,2,3};
答案 0 :(得分:2)
对Java来说,两者之间绝对没有区别。
两者都在内存中分配三个插槽,并在这些内存插槽中连续保存“1,2,3”。
[1]--[2]--[3]
在人性方面,最常见的写作方式是int [] input = {1,2,3}
如果你只是想分配一个数组并且不想在其中放入任何值,你甚至可以使用int [] input = new int[3]
,它将在内存中分配三个空格,而不是以后再使用,然后只需添加之后的价值观。这三种方式都与Java相同,因为数组是计算机的数组。
答案 1 :(得分:2)
没有区别。他们都编译成相同的代码。
使用int [] input = new int[] {1,2,3};
创建的反编译器输出。
0: iconst_3 // x = new int[3]
1: newarray int
3: dup // x[0] = 1
4: iconst_0
5: iconst_1
6: iastore
7: dup // x[1] = 2
8: iconst_1
9: iconst_2
10: iastore
11: dup // x[2] = 3
12: iconst_2
13: iconst_3
14: iastore
15: astore_1 // int [] input = x
x
在上面的注释中,int [] input = {1,2,3};
表示表达式堆栈的最高值。
0: iconst_3
1: newarray int
3: dup
4: iconst_0
5: iconst_1
6: iastore
7: dup
8: iconst_1
9: iconst_2
10: iastore
11: dup
12: iconst_2
13: iconst_3
14: iastore
15: astore_1
SELECT OrgLevel3,
OrgLevel4,
Sum(Case when complete is not null
then 1 else 0 end) as "# Complete",
Sum(Case when complete is null
then 1 else 0 end) as "# Incomplete",
COUNT(*)
FROM #reconcile
GROUP BY OrgLevel3, OrgLevel4
ORDER BY 1, 2, 5;
答案 2 :(得分:-1)
这两种方式没有区别。