Java中这两个语句有什么区别?
What is the difference between these two statements in Java?
int[] X = {1,2,3};
int[] Y = new int[] {1,2,3}
数组X的内容也会存储在堆上吗?
这两个语句在技术上语法上不同,但效果相同。
array initializer 可以作为局部变量声明初始值设定项的一部分出现,如:
int[] X = {1,2,3};
还有一个数组创建表达式,如:
new int[] {1,2,3}
是的,X
将在堆上。 Java 中的所有对象都在堆上,并且由于数组是对象,所以所有数组都在堆上。
唯一的区别是第一个语句只有在声明数组变量时才起作用,而第二个语句可以与声明分开写:
int[] X;
int[] Y;
X = {1,2,3}; // doesn't work
Y = new int[] {1,2,3}; // works
Java 提供了初始化数组的便利。因此,如果没有 new 运算符,您可以直接分配值。喜欢
int[] X={1,2,3};
此处数组的大小由初始化块中的 no.of 个元素知道。
另一种初始化方式是使用 new 运算符。
int[] y=new int[]{1,2,3};
字符串变量也采用了这两种初始化方式。但是在字符串中这两种类型有不同的含义。
int[] X = {1,2,3};
int[] Y = new int[] {1,2,3}
数组X的内容也会存储在堆上吗?
这两个语句在技术上语法上不同,但效果相同。
array initializer 可以作为局部变量声明初始值设定项的一部分出现,如:
int[] X = {1,2,3};
还有一个数组创建表达式,如:
new int[] {1,2,3}
是的,X
将在堆上。 Java 中的所有对象都在堆上,并且由于数组是对象,所以所有数组都在堆上。
唯一的区别是第一个语句只有在声明数组变量时才起作用,而第二个语句可以与声明分开写:
int[] X;
int[] Y;
X = {1,2,3}; // doesn't work
Y = new int[] {1,2,3}; // works
Java 提供了初始化数组的便利。因此,如果没有 new 运算符,您可以直接分配值。喜欢
int[] X={1,2,3};
此处数组的大小由初始化块中的 no.of 个元素知道。
另一种初始化方式是使用 new 运算符。
int[] y=new int[]{1,2,3};
字符串变量也采用了这两种初始化方式。但是在字符串中这两种类型有不同的含义。