Java中这两个语句有什么区别?

时间:2015-03-27 05:47:44

标签: java arrays object heap-memory

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

数组X的内容是否也会存储在堆上?

3 个答案:

答案 0 :(得分:4)

唯一的区别是第一个语句只在声明数组变量时有效,而第二个语句可以与声明分开编写:

int[] X;
int[] Y;
X = {1,2,3}; // doesn't work
Y = new int[] {1,2,3}; // works

答案 1 :(得分:0)

这两个陈述在技术上在语法上有所不同,但效果相同。

array initializer可以作为局部变量声明初始值设定项的一部分出现,如:

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

以及数组创建表达式,如:

new int[] {1,2,3}

是的,X将在堆上。 Java中的所有对象都在堆上,因为数组是对象,所有数组都在堆上。

答案 2 :(得分:0)

Java提供了初始化数组的简易性。因此,使用new运算符,您可以直接赋值。像

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

这里,初始化块中的no.of元素知道数组的大小。

另一种初始化方法是使用new运算符。

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

String变量也使用两种初始化方式。但在Strings中,这两种类型具有不同的含义。