Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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中初始化2D数组_Java_Arrays - Fatal编程技术网

在Java中初始化2D数组

在Java中初始化2D数组,java,arrays,Java,Arrays,在数组中,我们可以初始化如下内容: int[]arr={1,2,3,4,5} 但对于二维数组,为什么下面的公式不正确 public class Main { public static void main(String[] args) { int[][] arr = new int[3][]; arr[0] = new int[]{1,2,3}; //This is the correct way arr[0] = {1,2,3}; // -

在数组中,我们可以初始化如下内容:

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

但对于二维数组,为什么下面的公式不正确

public class Main {
    public static void main(String[] args) {
       int[][] arr = new int[3][];
       arr[0] = new int[]{1,2,3}; //This is the correct way

       arr[0] = {1,2,3};  // ->Why this is not right? 
    }
}

只能在变量初始化期间使用此语法。 这意味着Java语言规范只允许 arr[0]=newint[]{1,2,3};或int[]arr={{1,2,3},{1,2,3},{1,2,3};。
区别在于第一个变量是变量赋值,第二个变量是变量初始化

第二维度的空间将仅用代码newint[]{1,2,3}分配。在此之前,编译器不知道数组项的类型和维度是什么

是的,您是正确的。创建2D数组的第二种方法将不起作用,因为编译器将在何时编译代码,因为它无法确定其类型


除了java语言规范之外,您是否正在寻找答案?请检查此答案,谢谢,但是为什么我可以使用数组int[]arr={1,2,3};我不能在2D数组初始化中使用它?可以用这种方式初始化内联2D数组int[]arr={{{1,2,3},{1,2,3},{1,2,3}@瑞芝查看更新的答案,希望它能带来清晰的答案谢谢你的回答,但是当int[]]arr=新int[3][]时;execute,它是否告诉编译器所有元素都是int类型的,并且是2维的谢谢你的回答Asheesh,但是当第一行代码执行时:int[][]arr=new int[3][]是否表示其中的所有元素都是int类型的?@Ruizhi数组在java中是引用类型,因此,当您声明像new int[3][]这样的2d数组时,这意味着它将包含一个数组,其中包含另一个int数组的3个null引用[null,null,null]是,因为当您写入int[][]arr时,这意味着您将创建一个整数数组。新的int[3][]将在运行时分配内存。@Asheesh Sahu我知道数组在java中是对象,内存仅通过使用new关键字分配给对象。但是为什么对于1D数组,可以使用类似于:int[]arr={1,2,3}的缩写,但在2D数组中不允许使用呢?@Arashigor我想你解决了我的困惑,谢谢