在java中创建数组的不同方法有什么区别?

时间:2018-03-29 00:30:47

标签: java

有人可以告诉我以下两个陈述之间的区别"引擎盖"?

int [] input = new int[] {1,2,3};

int [] input = {1,2,3};

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)

这两种方式没有区别。