二维数组使用1,2,3,4的测试用例:
public class ManyArray_Test {
public static void main(String[] args) {
//1.二维数组得声明和初始化(一个[]代表数组中得一个维度)
int[] arr = new int[] {1,2,3}; //一位数组得静态初始化
int[][] arr1 = new int[][] {{1,2,3},{5},{6,7}}; //二维数组得静态初始化
//{1,2,3}又是一个数组,代表外层数组中得第一个元素
//{5}又是一个数组,代表外层数组中得第二个元素
//{6,7}又是一个数组,代表外层数组中得第三个元素
//动态初始化1
String[][] arr2 = new String[3][2];
//第一维为3,指定外层数组中有三个元素(外层数组得每一个元素为一维内层数组)
//第二维为2,指明内层数组中有两个元素(内层数组作为外层数组中得元素而存在)
//动态初始化2
String[][] arr3 = new String[3][];
//第一维为3,指定外层数组中有三个元素(外层数组得每一个元素为一维内层数组)
//第二维空间可以在创建二维数组对象时暂不指定具体长度,等到有具体需求得时候可在定义
//注意:二维数组得第一维维度必须指定长度,否则编译不通过,第二维维度可指定也可不指定
/*错误情况:
* int[][] arr = new int[][4];
*
* //错误,在定义二维数组得时候,第一维长度必须指定 *
* int[4][3] arr = new int[][3];
*
* //错误,前面定义变量[][]只是进行声明得作用,里面不能对维度进行初始化
*
*
* int[][] arr = new int[4][3]{{1,2,3},{5},{6,7}}; * 错误,静态初始化和动态初始化混杂,啥也不是,定义是要么不定义具体维度,给出具体数组元素。要么只定义具体维度,不给出数组中得具体元素
* */
//其他正确情况:
int arr4[][] = new int[4][3];
//[][]可以放在变量名之后声明
int []arr5[] = new int[4][3];
//[][]可以分别一前一后定义在变量名前后位置,但是这样做不符合通常的定义规范,不建议使用
int[][] arr6 = {{1,2,3},{5},{6,7}};
//java虚拟机进行自动类型推断,根据前驱定义,识别方面定义得数据与前驱一致
//声明 + 初始化分开来写,那么就不能进行自动类型推断了,会报错
//2.如何调用数组中得指定位置上得元素
System.out.println(arr1[0][1]); //2
//调用二维数组arr1得外层数组元素位置为0,内层数组元素位置为1上的元素
System.out.println(arr2[1][1]);
//null默认初始化值
//调用索引位置为1,1得元素,实际位置是第二行第二列得元素
arr3[1] = new String[4];
//为arr3数组中得索引为1,实际位置为2得元素开辟第二维空间,并指定长度
System.out.println(arr3[1][1]);
//运行出错,空指针异常
//想调用索引位置为1,1得元素,但是第二维中还未开辟空间,所以指向了一个寂寞,指向为空
//如果想进行调用,可以在调用此位置元素之前,指定第二维,为第二维开辟内存空间
//3.获取数组的长度 System.out.println(arr1.length); //3
//获取外层数组可存储元素(这里的每一个元素又指内层的一个一维数组)个数(长度)
System.out.println(arr1[0].length); //3
//获取外层数组元素指定索引处为0,内层数组长度(可存储数据的容量大小)
//4.如何遍历二维数组:使用双层for循环
for(int i = 0;i < arr1.length;i++) { //外层循环控制外层数组索引
for(int j = 0;j < arr1[i].length;j++) { //内层循环控制内层数组索引
System.out.print(arr1[i][j] + " ");
//第一次内层循环执行完输出:1 2 3
//第二次内层循环执行完输出:5
//第三次内层循环执行完输出:6 7
}
System.out.println();
}
}
}
二维数组的使用(使用1.2.3.4测试用例)
最新推荐文章于 2023-10-22 16:37:54 发布