在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