1、二维数组
(1)Java中操作多位数组的语法与一维数组类似。在实际应用中,三维以上的数组很少使用,主要使用二维数组。
(2)二维数组是一个元素为一维数组的一维数组。
(3)从语法上Java支持多维数组,但从内存分配原理的角度看,Java中只有一维数组,没有多维数组。或者说,从表面上是多维数组,实质上都是一维数组。
(4)定义二维数组的语法格式如下:
数据类型[][] 数组名;
或者:
数据类型 数组名[][];
--->数据类型为数组元素的类型。
--->“[][]”用于表明定义了一个二维数组,通过多个下标进行数据访问。
--->“数组名[下标]”表示二维数组里的一个元素,这个元素还是一个一维数组。
--->“数组名[下标][下标]”表示二维数组里的一个元素(一维数组)里的一个元素。
public static void main(String[] args) { /* * 二维数组:本质上还是一个一维数组,只是这个一维数组里的元素还是一个一维数组 */ // 二维数组声明: 数据类型[][] 数组名; 或者 数据类型 数组名[][]; int[][] nums; String[][] strs; // 分配空间: 数组名 = new 数据类型[数组长度][数组长度]; 或 数组名 = new 数据类型[数组长度][]; nums = new int[3][5];// nums是一个长度为3的二维数组,这个二维数组里的元素都是一个长度为5的一维数组 strs = new String[5][]; // strs是一个长度为5的二维数组,这个二维数组里的元素长度不相同 //赋值: 数组名[下标][下标] = 数据; nums[0][0] = 10; nums[0][1] = 20; nums[0][2] = 30; nums[0][3] = 40; nums[0][4] = 50; nums[1][0] = 100; nums[1][1] = 200; nums[1][2] = 300; nums[1][3] = 400; nums[1][4] = 500; nums[2][0] = 10; nums[2][1] = 20; nums[2][2] = 30; nums[2][3] = 40; //操作数据:数组名[下标][下标] System.out.println(nums[1][2]); nums[2][0]+=50; System.out.println(nums[2][0]); }
2、二维数组的使用
(1)初始化二维数组
二维数组初始化的语法格式如下:
数据类型[][] 数组名 = new 数据类型[][]{{元素1,元素2,···,元素n},{元素1,元素2,···,元素n},···,{元素1,元素2,···,元素n}};
或者:
数据类型[][] 数组名 = {{元素1,元素2,···,元素n},{元素1,元素2,···,元素n},···,{元素1,元素2,···,元素n}};
public static void main(String[] args) { //二维数组声明、分配空间合并写: 数据类型[][] 数组名 = new 数据类型[长度][长度]; 或 数据类型[][] 数组名 = new 数据类型[长度][]; int[][] nums = new int[3][4]; char[][] chs = new char[5][]; //二维数组声明、分配空间、赋值合并写: //数据类型[][] 数组名 = new 数据类型[][]{{数据1,数据2,...,数据n},{数据1,数据2,...,数据m},....,{数据1,数据2,...,数据k}}; boolean[][] bools = new boolean[][]{{true},{true,false},{false,false,true,false}}; //二维数组声明、分配空间、赋值合并写的简写方式 //数据类型[][] 数组名 = {{数据1,数据2,...,数据n},{数据1,数据2,...,数据m},....,{数据1,数据2,...,数据k}}; float[][] floats ={{12.5F},{99.5F,55.5F},{99.9F},{10.5F,12.5F,85.5F,56.3F,78.5F}}; }
(2)二维数组的遍历
格式如下:
for(int i = 0;i<数组名.length;i++){
for(int j = 0;j<数组名[i].length;j++){
System.out.println(数组名[i][j]);
}
}
public static void main(String[] args) { // 要求对3个班各6名学生某门课程的成绩进行各种操作,如何实现? // 声明一个长度为3的二维数组,这个二维数组里的元素都是长度为6的一维数组 int[][] scores = { { 99, 86, 75, 94, 45, 60 }, { 100, 78, 55, 86, 94, 30 }, { 100, 99, 88, 66, 77, 89 } }; // 遍历这个二维数组 for (int i = 0; i < scores.length; i++) { // System.out.println(scores[i]);//scores[i]还是一个一维数组,这个一维数组里存储的是各个班级学生的成绩,输出scores[i]输出的是这个一维数组的地址值,我们需要将这个一维数组里的元素取出来 // 声明一遍变量来累加各个班的成绩之和: int sum = 0; System.out.println("第" + (i + 1) + "个班学生成绩分别是:"); for (int j = 0; j < scores[i].length; j++) { System.out.print("第" + (j + 1) + "名学生成绩:"); System.out.println(scores[i][j]); sum += scores[i][j]; } System.out.println("第" + (i + 1) + "个班学生成绩之和是:" + sum); int avg = sum / scores[i].length; System.out.println("第" + (i + 1) + "个班学生平均成绩是:" + avg); } }