一、数组概述
数组是具有相同数据类型的一组数据的集合。在 Java 中同样将数组看做一个对象,虽然基本数据类型不是对象,但由基本数据类型组成的数组却是对象。
二、一维数组的创建及使用
2.1 创建一维数组
数组作为对象允许使用 new 关键字进行内存分配。在使用数组之前,必须首先定义数组变量所属的类型。一维数组创建有两种形式:
( 1 ) 先声明,再用 new 运算符进行内存分配
声明一维数组有两种方式:
< 1 > :数组元素类型 数组名字[] ; <2> :数组元素类型[] 数组名字 ;
数组元素类型决定了数组的数据类型。它可以是 Java 中任意的数据类型,包括简单类型和组合类型。
数组名字为一个合法的标识符。
符号 “ [] ”指明该变量是一个数组类型变量。 单个“ [] ”表示要创建的数组是一个一维数组。
int arr[] ; //声明 int 型数组,数组中的每个元素都是 int 型数值
String str[]; //声明 String 数组,数组中的每个元素都是 String 型数值
声明数组后,还不能立即访问它的任何元素,因为声明数组只是给出了数组名字和元素的数据类型,要想真正使用数组,还要为它分配内存空间。在为数组分配内存空间时必须指明数组的长度。
语法 :数组名字 = new 数组元素类型[数组元素的个数];
数组名字 :被连接到数组变量的名称。
数组元素的个数 :指定数组中变量的个数,即数组的长度。
使用 new 关键字分配数组时,必须指明数组元素的类型和数组元素的个数,即数组长度。
arr = new int[5];
使用 new 关键字为数组分配内存时,整形数组中各个元素的初始值都为 0 。
( 2 )声明的同时为数组分配内存
这种创建数组的方法是将数组的声明和内存的分配合在一起进行。
语法 :数组元素类型 数组名 = new 数组元素类型[数组元素的个数];
int month[] = new int[12]; //创建数组 month ,并指定了数组长度为 12
2.2 初始化一维数组
数组与基本数据类型一样可以进行初始化操作。数组的初始化可分别初始化数组中的每个元素。
数组的初始化有两种形式 :
(1) int arr[] = new int[]{1,2,3,5,25}; //第一种初始化
(2) int arr2[] = {34,23,12,6}; //第二种初始化
数组的初始化就是包括在大括号之内用逗号分开的表达式列表。用逗号( , ) 分割数组中的每个元素,系统自动为数组分配一定的空间。
2.3 使用一维数组
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.iut.println((i+1) + "月有" + day[i] + "天"); //输出信息
}
}
}
运行结果为:
1 月有 31 天
2 月有 28 天
3 月有 31 天
4 月有 30 天
5 月有 31 天
6 月有 30 天
7 月有 31 天
8 月有 31 天
9 月有 30 天
10 月有 31 天
11 月有 30 天
12 月有 31 天
三、二维数组的创建及使用
如果一维数组中的各个元素仍然是一个数组,那么它是一个二维数组。二维数组常用于表示表,表中的信息已行和列的形式组织,第一个下标代表元素所在的行,第二个下标代表元素所在的列。
3.1 二维数组的创建
二维数组可以看做是特殊的一维数组。
( 1 )先声明,再用 new 运算符进行内存分配
语法 :
<1> 数组元素类型 数组名字[][] ; <2> 数组元素类型[][] 数组名字 ;
声明二维数组 :
int myarr[][];
同一维数组一样,二维数组在声明时也没有分配内存空间,同样适用 new 关键字来分配内存,然后才可以访问每一个元素。
对于高维数组,有两种分配内存方式 :
(1) 直接为每一维分配内存空间
a = new int [2][4]; //为每一维数组分配内存
(2) 分别为每一维分配内存
a = new int [2][];
a[0] = new int[2];
a[1] = new int[3];
( 2 )声明的同时为数组分配内存
使用这种方式为二位数组分配内存时,首先指定最左边维数的内存,然后单独地给余下的维数分配内存。
3.2 二维数组初始化
语法 : type arrayname[][] = {value1 , value2 , ... valuen};
type :数组数据类型。
arrayname :数组名称,一个合法的标识符。
value :数组中各元素的值。
int myarr[][] = {{12,0} , {45,10} } ; //初始化二维数组
初始化二维数组后,要明确数组的小标都是从 0 开始。
int 型二维数组是以 int a[][] 来定义,所以可以直接给 a[x][y] 赋值。
3.3 使用二维数组
使用二维数组输出一个 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