一.一维数组的创建及使用
**一维数组的创建有两种形式:
1)先声明,再用new运算符进行内存分配
数组元素类型 数组名称[];
数组元素类型[] 数组名称;
数组元素的类型决定了数组的数据类型,它可以是java中的任意数据类型,包括简单类型和组合类型。数组名字为一个合法的标识符,符号“[ ]”指明该变量是一个数组类型变量。单个“[ ]”表示要创建的数组是一个一维数组。
例如:
声明一个一维数组,实例代码如下:
int arr[]; //声明int型数组,数组中的每个元素都是int型数值;
String str[]; //声明String数组,数组中的每个元素都是String型数值;
声明数组以后,不能马上访问它的任何元素,因为声明数组只是给出了数组名字和元素的数组类型,要想真正使用数组,还要为它分配内存空间。在为数组分配内存空间时必须指明数组的长度。
为数组分配内存空间的语法格式如下:
数组名称 = new 数组元素的类型[数组元素的个数];
数组名称:被连接到数组变量的名称;
数组元素的个数:指定数组中变量的个数,即数组的长度;
例如:
为数组分配内存,实例代码如下:
arr = new int[5];
以上代码表示要创建一个有5个元素的整型数组,并且将创建的数组对象赋给引用变量arr,即引用变量arr引用这个数组,如下图所示:
数组的下标是从0开始,由于创建的数组arr有5个元素,因此数组中元素的下标为0-4。
说明:
使用new关键字为数组分配内存时:
整型 数组中各个元素的初始值都为0;
浮点型 (float double)的初始值为0.0;
字符型 的初始值为\u0000;
布尔型 的初始值为false;
2)声明的同时为数组分配内存
这种创建数组的方法是将数组的声明和内存的分配合在一起执行。
语法如下:
数组元素的类型 数组名 = new 数组元素的类型[数组元素的个数];
例如:
声明并为数组分配内存,实例代码如下:
int month[] = new int[12];
上面的代码创建了数组month,并指定了长度为12.这种创建数组的方法也是java程序编写过中普遍的用法。
二.初始化一维数组
数组与基本数据类型一样可以进行初始化操作。数组的初始化可分别初始化数组中的每个元素,数组的初始化有以下两种形式:
int arr[] = new int[]{1,2,3,4,5}; //第一种初始化方式
int arr2[] = {23,34,45,56}; //第二种初始化方式
从中可以看出,数组的初始化就是包括在大括号内用逗号分开的表达式列表。用逗号(,)分割数组中的各个元素,系统自动为数组分配一定的空间。用第一种初始化方式,将创建5个数组,分别为1、2、3、4、5.第二种初始化方式,会创建4个元素的数组,分别为23、34、45、56。
1)使用一维数组
在java集合中的一维数组是常见的一种数据结构,下面的实例是使用一级数组将1-12月各月的天数输出。
例如:
在项目中创建类,在主方法中创建int型数组,并实现将各月的天数输出。
public class GetDay{
public static void main(String[] args){
//创建并初始化一维数组
int day[] = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
for(int i =0; i<12; i++){ //利用循环将信息输出
System.out.println((i+1)+"月有"+day[i]+"天"); //输出的信息
}
}
}
输出结果:
三.二维数组的创建与使用
如果一维数组中的各个元素仍然是一个数组,那么它就是一个二维数组。
二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,第二个下标代表元素所在的列。
小知识:
数组的 length属性:
表示数组的长度,具有以下特点:
1)length的返回值是int型;
2)数组的长度不可以定义成负数;
3)length的值是常量。
1)二维数组的创建
二维数组可以看作是特殊的一维数组,因此,二维数组的创建同样也有两种方式。
(1)先声明,再用new运算符进行内存分配
语法如下:
数组元素的类型 数组名称[] [];
数组元素的类型[] [] 数组名称;
例如:
声明二维数组,实例代码如下:
int myarr [] [] ;
同一维数组一样,二维数组在声明时也没有分配内存空间,同样要使用new 关键字来分配内存然后才可以访问每个元素。
对于高维数组,有两种为数组分配内存的方式:
a)直接为每一维分配内存空间
例如:为每一维数组分配内存,实例代码如下:
int a[] [] = new int [2] [4];
上述代码创建了二维数组a,二维数组a中包括两个长度为4的一维数组,内存图分配如下:
b)分别为每一维分配内存
int a[] [] = new int[2][];
a[0]= new int[2];
a[1]= new int[3];
(2)声明的同时为数组分配内存
第二种方式同第一种实现的功能相同。首先指定最左边维数的内存,然后单独地给余下的维数分配内存。通过第二种方式为二维数组分配内存,如下图所示:
2)二维数组的初始化
二维数组的初始化与一维数组初始化类似,同样可以使用大括号完成。
语法如下:
type arrayname [] [] = {value1,value2,……valuen};
type:数组数据类型;
arrayname:数组名称,一个合法的标识符;
value:数组中各元素的值;
例如:
int myarr[] [] = {{12,0},{45,10}};
初始化二维数组后,要明确数组的下标都是从0开始。例如,上面的代码中,myarr[1][1]的值为10。
int型二维数组是以int a [][]来定义的,所以可以直接给a[x][y]赋值。例如,给a[1]的第二个元素赋值的语句如下:
a[1][1]= 20;
3)使用二维数组
二维数组在实际应用中用得非常广泛。下面的实例就是使用二维数组输出 一个3行4列且所有元素都是0的矩阵。
例如:
在项目中创建类,在主方法中编写代码实现输出一个3行4列的元素都为0的矩阵。
public class Matrix{
public static void main(String[] args){
int a[] [] = new int[3][4];
for(int i = 0 ; i<a.length; i ++){
for(int j = 0; j <a[i].length; j++){
System.out.print(a[i][j]);
}
System.out.println();
}
}
}
输出结果:
0000
0000
0000
说明:
对于整型二维数组,创建成功后,系统会赋值给数组中每个元素的初始值为0.