Java二维数组
来自CloudWiki
一维数组看作是一个存放元素的列表,二维数组可看作是一个元素的表格,由行和列组成
目录
声明与创建
下面是声明二维数组的语法:
数据类型[ ][ ] 数组名;或 数据类型 数组名[ ][ ];
- 例如:“int[ ][ ] x;”与“int x [ ][ ];”声明二维数组的方式都是正确的,但是一般不推荐使用后者。
int [][] score;
练一练:声明一个元素类型为double的二维数组price
数组的初始化
可以通过给数组中的元素赋值的方式完成数组的初始化,如图4-3所示,也可以使用数组初始化来声明、创建、和初始化一个二维数组,如图4-4所示,这两种方法都是等价的
静态初始化
double [][] score= {{95,96,97}, {99,89,84}};
动态初始化
和一维数组创建类似,声明数组没有为二维数组中的元素分配内存空间,还需要使用new操作符为数组分配空间,语法如下:
数组名= new 类型标识符[行数][列数]
也可以把声明和创建合并在一起,语法如下:
数据类型 数组名[][]=new 数据类型[行数][列数] 数据类型[][] 数组名=new 数据类型[行数][列数]
例如:double [][] score2 = new double [2][3];创建了一个2行,3列的数组,如图4-1所示。
- 例如:
double [][] score2 = new double [2][3]; score[0][0]=95; score[0][1]=96;
练一练:用两种方法将数组price初始化
访问数组元素
获取数组长度
二维数组实际上是一个一维数组,他的每个元素都是一个一维数组。如图4-2所示
数组x的长度是数组中的行数,可以使用x.length获取该值,例如int x[][]=new int[2][3],x.length为2
元素x[0],x[1],……,x[x.length-1]也是数组,它代表每行的列数,可以使用x[行标].length的方式获取它们的长度。例如x[0].length=2
System.out.println(score2.length); System.out.println(score2[0].length); System.out.println(score2[1].length);
读取和写入
数组中的元素可以通过行下标和列下标来访问,二维数组的每个下标索引都是从0开始的int值,例如x[0][0]访问数组中的第一个元素。
写入元素:
double [][] score = new double [2][3];//如果数组已经创建,这一步可省略 score[0][0]=95; score[0][1]=96; score[0][2]=95; score[1][0]=95; score[1][1]=96; score[1][2]=95;
读取元素:
System.out.println(score[0][0]); System.out.println(score[0][1]); System.out.println(score[0][2]); System.out.println(score[1][0]); System.out.println(score[1][1]); System.out.println(score[1][2]);
二维数组假设为int a[m,n],则横向上访问的范围为0,n-1; 纵向上访问的范围为0,m-1
思考:二维数组的数组名+length值打印出来的是什么长度?
System.out.println(score2.length);
头脑风暴:数组 float [][] m =new float[5][8],横向和纵向的最大下标各是几?
数组 float [][] a =new float[m][n]横向和纵向的最大下标分别是m-1 和n-1
遍历二维数组
最后通过一个嵌套的for循环来演示 二维数组如何遍历:
public class Array2BianLi { public static void main(String[] args) { int[][] arr = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int sum = 0; System.out.println("遍历二维数组:"); for (int i = 0; i < arr.length; i++) { System.out.print("第"+i+"行元素:"); for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j] + " "); sum += arr[i][j]; } System.out.println(); } System.out.println("所有元素总和为:" + sum); } }