java数组之二维数组

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数组的元素也可以是数组,每个数组的一个元素都是由一个一维数组构成,被称为二维数组。同样,多维数组可以看作是数组的数组,即N维数组的每一个元素就是一个N-1维数组。如:三维数组中的每一个元素都是一个二维数组。多维数组的定义即初始化与二维数组的基本类似,因此本节主要讲述二维数组。

1 、二维数组的声明

二维数组声明的一般格式如下:

数据类型数组名[][];

或者格式如下:

数据类型[][] 数组名;

其中数据类型与一维数组的相同,它既可以是基本数据类型,也可以是复合数据类型,数组名可以是任意合法的变量名。下面是数组声明举例。

char ch[][];

double[][] d;

String[][] str;

与一维数组的声明相同,二维数组也不需要规定其中任意一维的长度,下面的声明都是不合法的。

char ch[4][];

double[][5] d;

String[6][7] str;

2、二维数组的初始化

二维数组的初始化也分为直接初始化和动态初始化两种方式。直接初始化必须在声明时开始,如下 ··124面的例子所示。

int array[][] = {{1,2},{2,4},{4,8}};

二维数组的动态初始化又可分为两种方式:一种是直接规定每一维的长度,并分配所需的内存空间,另一种是从高维开始,分别为每一维规定长度并分配内存空间。

直接为每一维分配内存的格式如下:

变量名= new 数据类型[二维长度][一维长度];

其中二维长度和一维长度都是大于0的整数,如下所示。

int array[][];

array = new int[3][5];

array是一个二维数组,二维长度为3,array[0]、array[1]、array[2]都是一维数组,长度都是5。分别分配内存格式如下:

变量名= new 数据类型[二维长度][];

变量名[0] = new 数据类型[一维长度0];

变量名[1] = new 数据类型[一维长度1];

变量名[2] = new 数据类型[一维长度2];

...

变量名[二维长度-1] = new 数据类型[一维长度n];

下面是一个二维数组初始化的实例。

Int array[][]; //声明int类型二维数组array

A = new int[3][]; //为二维分配内存空间

A[0] = new int[5]; //为A[0]的一维分配内存空间

A[1] = new int[5]; //为A[1]的一维分配内存空间

A[2] = new int[5]; //为A[2]的一维分配内存空间

3、二维数组的空间模型

多维数组中高维的每一个元素都是一个低维数组。事实上,数组本身也是一个对象,它也是通过地址引用控制的。在高维元素中,每一个元素上保存的是一个低维数组的地址。

4 、二维数组的使用

多维数组比一维数组更有用,尤其是二维数组在矩阵运算中使用非常广泛。矩阵运算包括矩阵的加法、减法、乘法、除法、转置等。这些矩阵运算都可以使用二维数组表示和运算。本节将给出如下矩阵,通过程序实现矩阵的转置。

31 45 56 71

47 89 90 32

56 78 90 24

转置后变成如下矩阵:

31 47 56

45 89 78

56 90 90

71 32 24

实现上面二维数组转置程序如下:

02 import java.util.Scanner;

03 public class MatricesInverted

04 {

05 public static void main(String args[])

06 {

07 int matricesa[][] = {{31,45,56,71},{47,89,90,32},{56,78,90,24}}; //声明并初始化整型二维变量

08 System.out.println("转置前的矩阵如下:"); //输出字符串

09 for (int i =0; i < matricesa.length; i++) //for循环遍历二维数组的二维

10 {

11 for(int j = 0; j < matricesa.length; j++) //for循环遍历二维数组的一维

12 {

13 System.out.print(matricesa[j]+" "); //输出元素matricesa[j]

14 }

15 System.out.println(); //输出换行符

16 }

17 //声明并创建matricesb二维数组

18 int matricesb[][] = new int[matricesa[0].length][matricesa.length];

19 //实现矩阵转置

20 for (int i =0; i < matricesa.length; i++) //for循环遍历二维数组二维

21 {

22 for(int j = 0; j < matricesa.length; j++) //for循环遍历二维数组一维

23

24 {

25 matricesb[j] = matricesa[j]; //元素赋值

26 }

27 }

28 System.out.println("转置后的矩阵如下:");

29 //输出转置后的矩阵

30 for (int i =0; i < matricesb.length; i++) //for循环遍历二维数组二维

相关文档
最新文档