6.1.3Java中的数组1.一维数组Java声明一维数组的语法有两种,两种形式上没有区别,使用效果完全一样:int[] a;//第一种int a[l;//第二种与Cc/C++不同,Java中的数组是一种引用类型的变量,数组变量并不是数组本身,它只是指向堆内存中的数组对象,因此「1中无需指定数组元素的个数即数组长度。所以必须在先分配内存空间后才能访问数组中的元素。为数组分配内存空间的方式如下:int[] a;/ /定义一个int数组变量a//为int数组变量a指定元素个数为3,此时分配内存空间a=new int[3];也可以这样写:int[]a=newint[3];//相当于在定义int数组变量的时候,为其分配内存空间11/57
1. 一维数组 Java声明一维数组的语法有两种,两种形式上没有区别,使用效果完全一样: int[] a; //第一种 int a[]; //第二种 与C/C++不同,Java 中的数组是一种引用类型的变量,数组变量并不是数组本 身,它只是指向堆内存中的数组对象,因此[]中无需指定数组元素的个数即数组长 度。所以必须在先分配内存空间后才能访问数组中的元素。为数组分配内存空间的 方式如下: int[] a; //定义一个int数组变量a a=new int[3]; //为int数组变量a指定元素个数为3,此时分配内存空间 也可以这样写: int[] a=new int[3]; //相当于在定义int数组变量的时候,为其分配内存空间 11/57
Java数组初始化有两种方式,一种是静态初始化,即初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度,另外一种是动态初始化,即初始化时程序员只指定数组长度,由系统为数组元素分配初始值。例如://静态初始化int[]a=newint[](1,2,3];//动态初始化String[]b=newString[3];b[o]="Hello";b[1]="World";b[2]="HelloWorld";12/57
Java数组初始化有两种方式,一种是静态初始化,即初始化时由程序 员显式指定每个数组元素的初始值,由系统决定数组长度,另外一种是动态 初始化,即初始化时程序员只指定数组长度,由系统为数组元素分配初始值。 例如: int[] a=new int[]{1,2,3}; //静态初始化 String[] b=new String[3]; //动态初始化 b[0]="Hello"; b[1]="World"; b[2]="Hello World"; 12/57
int[l c=new int[N];定义的一维数组c的内存空间如图所示,总共占用24+4N个字节。16字节对象开销长度N←一4字节头信息一4字节填充字节N个int值,占用4N个字节13/57
int[] c=new int[N]; 定义的一维数组c的内存空间如图所示,总共占用24+4N个字节。 对象开销 长度N 填充字节 . . . 16字节 4字节 4字节 头信息 N个int值,占用4N个字节 13/57
2.二维数组二维数组的声明、初始化和访问元素和一维数组相似,例如://静态初始化int[][]a=({1,2],{2,3},4,5]];int[][]b=newint[2][3];//动态初始化b[0][0]=1;b[0][1]=2;//...b[1][2]=6;14/57
2. 二维数组 二维数组的声明、初始化和访问元素和一维数组相似,例如: int [][] a={{1,2},{2,3},{4,5}}; //静态初始化 int [][] b= new int[2][3]; b[0][0]=1; //动态初始化 b[0][1]=2; //. b[1][2]=6; 14/57
Java语言中把二维数组看作是一维数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。例如:int[][]a=newint[2][];a[o]=new int[3];a[1]=new int[5];//输出:2System.out.printf("数组a的大小:%d\n",a.length);1/输出:3System.out.printf("a[e]的大小:%d\n",a[o].length);//输出:5System.out.printf("a[1]的大小:%d\n",a[1].length);15/57
Java语言中把二维数组看作是一维数组的数组,数组空间不是连续分 配的,所以不要求二维数组每一维的大小相同。例如: int [][]a=new int[2][]; a[0]=new int[3]; a[1]=new int[5]; System.out.printf("数组a的大小:%d\n",a.length); //输出:2 System.out.printf("a[0]的大小:%d\n",a[0].length); //输出:3 System.out.printf("a[1]的大小:%d\n",a[1].length); //输出:5 15/57