Java基础知识(九)(二维数组)
三、二维数组
1、二维数组概述
我们数加科技的大数据班每个班有很多个学生,所以,可以用数组来存储,而我们又同时有很多个大数据班。
这个也应该用一个数组来存储。如何来表示这样的数据呢?Java就提供了二维数组供我们使用。
由此可见:其实二维数组其实就是一个元素为一维数组的数组。
二维数组的语句定义格式:
数据类型[][] 变量名 = new 数据类型[m][n]; (推荐这种写法)
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
举例:
int[][] arr = new int[3][2];
定义了一个二维数组arr
这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[2]
每个一维数组有2个元素,可以通过arr[m][n]来获取
表示获取第m+1个一维数组的第n+1个元素
还有可能看到以下几个写法,它们也是正确的:
(1)、int[] arr[] = new int[3][2];
(2)、int arr[][] = new int[3][2];
public class Array2Demo1 {public static void main(String[] args) {//定义一个二维数组,使用格式一做初始化int[][] arr = new int[3][2];System.out.println(arr); // [[I@4554617cSystem.out.println(arr[0]); // [I@74a14482System.out.println(arr[1]); // [I@1540e19dSystem.out.println(arr[2]); // [I@677327b6//想获取第一个一维数组中的第一个元素怎么办呢?//首先,得获取第一个一维数组
// int[] array1 = arr[0];
// //然后通过索引获取第一个元素
// System.out.println(array1[0]);System.out.println(arr[0][0]);System.out.println(arr[0][1]); //获取二维数组中第一个一维数组中的第二个元素//ArrayIndexOutOfBoundsException: 2
// System.out.println(arr[0][2]); //获取二维数组中第一个一维数组中的第二个元素System.out.println(arr[1][0]); //获取二维数组中第二个一维数组中的第一个元素System.out.println(arr[1][1]); //获取二维数组中第二个一维数组中的第二个元素System.out.println(arr[2][0]); //获取二维数组中第三个一维数组中的第一个元素System.out.println(arr[2][1]); //获取二维数组中第三个一维数组中的第二个元素}
}
2、二维数组第二种定义格式:
数据类型[][] 变量名 = new 数据类型[m][];
举例:int[][] arr = new int[3][];
public class Array2Demo2 {public static void main(String[] args) {//定义二维数组的第二种格式int[][] arr = new int[3][];System.out.println(arr);System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);//给二维数组种第一个元素赋值一个一维数组//赋值后的意义是:表示二维数组种第一个元素是一个长度为4的int类型的一维数组。arr[0] = new int[4];//赋值后的意义是:表示二维数组种第二个元素是一个长度为5的int类型的一维数组。arr[1] = new int[5];//赋值后的意义是:表示二维数组种第三个元素是一个长度为10的int类型的一维数组。arr[2] = new int[10];System.out.println(arr); //二维数组的地址值System.out.println(arr[0]); //二维数组中第一个一维数组的地址值System.out.println(arr[1]); //二维数组中第二个一维数组的地址值System.out.println(arr[2]);//二维数组中第三个一维数组的地址值}
}
3、二维数组中第三种格式:
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
举例:int[][] arr = new int[][]{{1,2},{3,4,5},{1,2,34,5}};
简化版格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
举例:int[][] arr = {{1,2},{3,4,5},{1,2,34,5}};
表示的是:二维数组arr中有三个一维数组,分别是{1,2},{3,4,5},{1,2,34,5}
public class Array2Demo3 {public static void main(String[] args) {//数组的第三种格式定义int[][] arr = {{1,2},{3,4,5},{1,2,34,5}};System.out.println(arr); //二维数组的地址值System.out.println(arr[0]); //二维数组第一个一维数组的地址值System.out.println(arr[1]);//二维数组第二个一维数组的地址值System.out.println(arr[2]);//二维数组第三个一维数组的地址值//获取二维数组中第一个一维数组的第一个元素System.out.println(arr[0][0]);System.out.println(arr[0][1]);//获取二维数组中第二个一维数组中所有元素System.out.println(arr[1][0]);System.out.println(arr[1][1]);System.out.println(arr[1][2]);//获取二维数组中第三个一维数组中所有元素System.out.println(arr[2][0]);System.out.println(arr[2][1]);System.out.println(arr[2][2]);System.out.println(arr[2][3]);
// System.out.println(arr[2][4]);}
}
4、举例 :二维数组遍历
数加科技
十三期
小王,小李
十四期
小明,小刘,小张
十五期
小虎,小宇,小旺,小凯
十六期
小火,小杨,小爱,小周
public class Array2Demo4 {public static void main(String[] args) {//定义一个二维数组表示是一个数加科技String[][] shujia = {{"小王", "小李"}, {"小明", "小刘", "小张"}, {"小虎", "小宇", "小旺", "小凯"}, {"小火", "小杨", "小爱", "小周"}};for (int i = 0; i < shujia.length; i++) {
// System.out.println(shujia[i]);//外层循环遍历到的是每一个一维数组//要想获取每个一维数组中的元素,再进行一次for循环遍历System.out.println("第" + (i + 1) + "个数组:");for (int j = 0; j < shujia[i].length; j++) {
// System.out.println(shujia[i][j]);if (j == shujia[i].length - 1) {System.out.print(shujia[i][j] + "]");} else if (j == 0) {System.out.print("[" + shujia[i][j] + ",");} else {System.out.print(shujia[i][j] + ",");}}//每次内循环结束表示打印完一个一维数组,换行System.out.println();}}
}
5、举例:公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
public class Array2Demo5 {public static void main(String[] args) {//定义一个二维数组表示是一个公司,每个季度相当于一个一维数组作为二维数组的元素传入int[][] arr = {{22, 66, 44}, {77, 33, 88}, {25, 45, 65}, {11, 66, 99}};// int[][] arr = new int[2][]{{1,2},{3,1,2}};//定义一个变量统计总销售额int sum = 0;for (int i = 0; i < arr.length; i++) {for (int j = 0; j < arr[i].length; j++) {sum = sum + arr[i][j];}}System.out.println("该公司年销售额为:" + sum);}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
