int [][] cords= {
{1,2,3,4},
{5,6,7,8}
};//cords有两个索引cords.length=2
for(int i=0;i<cords.length;i++) {
for(int j=0;j<cords[i].length;j++) {
System.out.print(cords[i][j]);
}
System.out.println();
}
数组使用一个索引存取数组元素,声明二维数组,二维数组使用两个索引存取数组元素。得知有几列cords.length。取得每列的长度cords[i].length
cords[i][j]指定列、行索引取得数组元素要声明二维数组。将二维数组看作矩阵会比较容易理解,由于有两个维度,必须先通过 cords. length得知有几列。对于每一列,再利用cords[i].length得知每列有几个元素目。由于在这个范例中,是用二维数组来记录i、j坐标的储存值i、j就相当于列、行( Column)索引,因此可使用ij来取得x、y坐标的储存值。
其实这个范例也是循环地走访二维数组,并没有真正要用索引做什么事。用增强式for循环来改写:
for(int[] row:cords) {
for(int val:row) {
System.out.print(val);
}
System.out.println();
}
可以这样理解:新建一个int[] row数组将cords[][]里两个索引依次传给row[],之后将row[]数组里值依次给整型val。
因为没有制定行列所以,这么建立数组也是合法的:
int[][] cords={
{1,2,3,4,5},
{1,2,3}
};
!!!数组是对象 !!!
以上都是基本类型建立的数组,接下来介绍类类型建立的数组。首先看看如何用new关键词建立 Integer数组:
Integer scores= new Integer(3);
那么注意,上面这个程序片段建立了几个 Integer对象呢?注意,不是3个,是0个。如果是类类型,这个片段的写法建立的数组,每个索引都是参考至null,而基本类型创建的数组索引参考至默认值0。
Integer[] arr=new Integer[4];
for(Integer row:arr) {
System.out.println(row);
}
执行结果为
null
null
null
null
传入值:
arr[0]=1;
arr[1]=2;
......
如果事先知道 Integer数组每个元素要放什么,可以如下:
Integer[] scores =(new Integer(1), new Integer(2));
如果是JDK5以上,结合自动装箱来简化程序撰写:
Integer [] scores =(99, 87, 66);
Integer[][] cords =new Integer[3][2];
new Integer[3][2]代表着一个 Integer类型的对象,其中有3个 integer[]类型的索引,分别参考至长度为2的 Integer一维数组对象,而每个 Integer一维数组的索引都参考至null,所以答案还是0个 integer实例。