java中由一维数组到二维数组再到多维数组的演变–
package com.array.sort;
/**
* @Auther: GavinLim
* @Date: 2021/6/27 - 06 - 29 - 15:12
* @Description: com.array.sort
* @version: 1.0
*/
public class Kuaijiejian {
public static void main(String[] args) {
int[][] array = new int[3][];
array[0]= new int[]{0, 1, 2, 3, 4, 5};
array[1]= new int[]{6,7,8};
array[2]=new int[]{9};
//二维数组的遍历方式--
//双重普通for
for (int i = 0; i <array.length ; i++) {//得到的是一个数组,再将数组进行遍历,
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]+"\t");
}
System.out.println();
}
//普通for+增强for
for (int i = 0; i <array.length ; i++) {//得到的是一个数组,再将数组进行遍历,
for (int j:array[i]
) {
System.out.print(j+"\t");
}
System.out.println();
}
//增强for 与增强for
for (int [] i:array //
) {
for (int a:i
) {
}
System.out.println();
}
//增强for与普通for
for (int [] arr:array
) {
for (int j = 0; j <arr.length ; j++) {
System.out.print(arr[j]+"\t");
}
System.out.println();
}
}
}
本代码主要用到了for循环,过多的也不做解释,
只是要注意一点,for循环中每一个数组不能为空,因为都吊用了数组的长度 .length,如果数组为空,会出现空指向异常的问题,
举个例子–
/**
* @Auther: GavinLim
* @Date: 2021/6/27 - 06 - 29 - 15:12
* @Description: com.array.sort
* @version: 1.0
*/
public class Kuaijiejian {
public static void main(String[] args) {
int[][] array = new int[4][];
array[0]= new int[]{0, 1, 2, 3, 4, 5};
array[1]= new int[]{6,7,8};
array[2]=new int[]{9};
//二维数组的遍历方式--
//增强for 与增强for
for (int [] i:array //
) {
for (int a:i
) {
}
System.out.println();
}
}
}
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
Exception in thread "main" java.lang.NullPointerException: Cannot read the array length because "<local6>" is null
at com.array.sort.Kuaijiejian.main(Kuaijiejian.java:21)
其他:增强for循环的实现是用迭代器完成的,感兴趣的可以自己去看源码来理解;
下面来画个内存吧–
三维数组多维数组也一样,实际上在java中可以把多维数组看成一维数组。这样在循环遍历的时候也好容易理解;