我已经声明了一个整数数组的堆栈 -
Stack<int[]> stack = new Stack<int[]>();
当我使用以下代码将对象推送到堆栈时,我收到错误 -
stack.push({0,0});
但是当我使用以下代码时它会起作用 -
stack.push(new int[]{0,0});
所以我有点困惑为什么第一种方法不起作用。 {0,0}
是否未声明可以在堆栈上推送的新数组对象?
答案 0 :(得分:2)
仅使用大括号{0,0}
本身并不创建和初始化新数组。您可能会对以下语法感到困惑,这使得它看起来像是可能的。
int[] someArray = {0, 0};
这种语法只允许括号,而不是它之前的new int[]
,只有它是声明的一部分。你没有声明,所以它的语法无效。如果没有声明,则new int[]
部分是必需的。
答案 1 :(得分:1)
试试这个:
stack.push(new int[] {0,0});
,或者
int[] array = {0, 0} // creates a new array
stack.push(array);
因为,只有{0, 0}
不会创建任何新数组,这就是导致错误的原因。
Read more.