Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中初始化int数组时,编译器会添加新的int[]吗?_Java - Fatal编程技术网

在Java中初始化int数组时,编译器会添加新的int[]吗?

在Java中初始化int数组时,编译器会添加新的int[]吗?,java,Java,这两者的区别是什么?第一个真的被转换成第二个了吗 int [] ar = {1,2,3,4}; and int [] ar = new int[]{1,2,3,4}; int[]ar=new{1,2,3,4}将不会编译 如果你的意思是int[]ar={1,2,3,4},然后是-它与int[]ar=newint[]{1,2,3,4}相同 int [] ar = new {1,2,3,4}; 会给你一个编译错误,我想你的意思是: int [] ar = {1,2,3,4}; 在这种情况下,答案

这两者的区别是什么?第一个真的被转换成第二个了吗

int [] ar = {1,2,3,4};
and
int [] ar = new int[]{1,2,3,4};

int[]ar=new{1,2,3,4}将不会编译

如果你的意思是
int[]ar={1,2,3,4},然后是-它与
int[]ar=newint[]{1,2,3,4}相同

int [] ar = new {1,2,3,4};
会给你一个编译错误,我想你的意思是:

int [] ar = {1,2,3,4};

在这种情况下,答案是肯定的。这是java对声明数组的简写。

正如其他答案已经指出的那样

int[] arr = {1, 2, 3, 4};

它们完全一样

在这个答案中,我只会详细说明何时使用哪一个

第一个显然不太容易打字,所以尽可能使用它。但是,它只能在直接赋值给变量时使用。有时,我们希望创建一个数组而不给变量赋值。这称为匿名数组。在这种情况下,我们需要使用第二种语法

head({1, 2, 3, 4});  // error
head(new int[]{1, 2, 3, 4});  // ok

return {1, 2, 3, 4};  // error
return new int[]{1, 2, 3, 4};  // ok

是否有新的
仅是语言上的问题。在C++中,数组不是在堆上创建的,也不是在堆栈上创建的。在Java中,任何非原语对象都会进入堆。

int[]ar=new{1,2,3,4}
是一个编译错误第二种形式只对匿名数组真正有用。@5gon12eder是因为在ar={1,2,3}中,已经为ar分配了内存,并且不需要使用新的[]?@Cgraphics否,它只是语法中的一种替代方法(在初始化声明它的数组时).我已经给出了答案。我的问题是,在Java中,任何非原语对象都会进入堆的位置?+1时,哪一个更合适
head({1, 2, 3, 4});  // error
head(new int[]{1, 2, 3, 4});  // ok

return {1, 2, 3, 4};  // error
return new int[]{1, 2, 3, 4};  // ok