Java二维数组

来自CloudWiki
跳转至: 导航搜索

一维数组看作是一个存放元素的列表,二维数组可看作是一个元素的表格,由行和列组成

声明与创建

下面是声明二维数组的语法:

数据类型[ ][ ] 数组名;或 数据类型 数组名[ ][ ];
  • 例如:“int[ ][ ] x;”与“int x [ ][ ];”声明二维数组的方式都是正确的,但是一般不推荐使用后者。
int [][] score;

练一练:声明一个元素类型为double的二维数组price

数组的初始化

可以通过给数组中的元素赋值的方式完成数组的初始化,如图4-3所示,也可以使用数组初始化来声明、创建、和初始化一个二维数组,如图4-4所示,这两种方法都是等价的

Java4-4.png

静态初始化

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;


Java4-2.png

练一练:用两种方法将数组price初始化

访问数组元素

获取数组长度

二维数组实际上是一个一维数组,他的每个元素都是一个一维数组。如图4-2所示

Java4-3.png

数组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);
        }  
      
    }

练一练:在自己的Eclipse上编写一个二维数组的遍历程序