Java二维数组定义

时间:2013-08-26 19:01:35

标签: java arrays multidimensional-array definition dimensions

我有一个基本的问题。

例如:

int a[][] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}} 

我们说它是[3] [4],因为它有3个元素,每个元素都有自己的4个元素。

但是如何:

int a[][] = {{1},{5,6,7},{9,10,11,12}} 

还在[3] [4]吗?


更新

基于下面的有用评论,我的第一个例子可以写成[3] [4]数组,但第二个例子不能像那样表示,对吗?

6 个答案:

答案 0 :(得分:6)

这些被称为Jagged Arrays,它们不被视为m-by-n,因为它们不符合Matrix的正式定义。

  

在数学中,矩阵(复数矩阵)是一个数字,符号或表达式的矩形数组,按行和列排列。

答案 1 :(得分:3)

根据java

  

多维数组是一个数组,其组件本身就是数组。这与C或Fortran中的数组不同。其结果是允许行的长度变化。

选择int a[][]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}

这里你不能说[3] [4]数组,但可以说它有3个元素,每个元素都有自己的4个元素。

int a[][]={{1},{5,6,7},{9,10,11,12}}
所以在这里你可以说数组有3个元素,每个元素都有不同数量的元素。

答案 2 :(得分:2)

我刚刚在Android环境中进行了此测试,这可能适用于这种情况(我认为)

int a[][] = { { 1 }, { 5, 6, 7 }, { 9, 10, 11, 12 } };
    for (int i = 0; i < a.length; i++) {
        Log.i("", "i: " + i);
        for (int j = 0; j < a[i].length; j++) {
            Log.i("", "j: " + j);
        }
}

我得到的是:

i: 0
j: 0
i: 1
j: 0
j: 1
j: 2
i: 2
j: 0
j: 1
j: 2
j: 3

因此,a不是int[3][4]

答案 3 :(得分:0)

不是[3] [4]。

数组数组,其中外部数组的大小为“3”,数组元素也是数组,长度各不相同,分别为1,3和4。

答案 4 :(得分:0)

不,不是。当你像int[][] test = new int[3][4]那样只是语法糖。双阵列没什么神奇之处。

两个示例都是数组数组。你的第一个碰巧让所有这些阵列都具有相同的成功率,而你的第二个则没有。

作为旁注,绝大多数java程序员使用int[][] a表示法,而不是int a[][]表示法。

答案 5 :(得分:0)

Java中没有二维数组。

只有数组数组,每个数组的长度不同

对于矩阵,请考虑线性内存布局,并使用其中一个现有库。

请注意,以下内容在Java中有效:

int[][] example = new int[2][2];
example[0] = new int[]{1,2,3,4,5,6,7,8,9,10};

虽然合适的矩阵模块不允许这种情况发生。

强弱与弱势。有些应用程序只需要需要数组阵列。并且存在更有效的情况(例如,仅存储半个三角形矩阵)。