数组
一维数组
- 数组一旦被创建,那么它的大小就是固定的。使用一个数组引用和下标来访问数组中的元素
- 数组是数据的集合,但是通常会把数组看作一个存储了具有相同类型的变量集合
- 无需声明单个变量,只要声明一个数组变量number,并用number[0]等来表示单个变量
声明数组变量
- 声明一个引用数组的变量,并指明数组的元素类型
//elementType可以是任意数据类型,数组中所有的元素都必须具有相同的数据类型
elementType[] arrayRefVar;
elementType arrayRefVar[];//可以,但不推荐
创建数组
不同于声明基本数据类型变量,声明一个数组变量时并不给数组分配任何内存空间;它只是创建了一个对数组的引用的存储位置。如果变量不包含对数组的引用,那么这个变量的值为null。除非数组已经创建,否则不会给变量分配任何元素。声明数组变量之后,可以使用new操作来创建数组
arrayRefVar = new elementType[arraysize];
可以将声明数组、创建数组、将数组引用赋值给变量三个步骤合并到一起
elementType[] arrayRefVar = new elementType[arraysize];
数组大小和默认值
当给数组分配空间时,必须指定数组能够存储的元素个数,从而决定数组的大小。创建后不能修改。数组名.length得到数组的大小;创建数组后,元素会得到默认值,基本数据类型的默认值是0,char类型的默认值是’\u000’,boolean的默认值是false
访问数组元素
数组可以通过下标访问,从0开始到n-1,
处理数组
通常会用到for循环,因为数组里是同类型数据,可以用for循反复环处理元素;数组大小已知,所以用for循环
for循环添加数组
double[] array = new double[10];
Scanner input = new Scanner(System.in);
for(int i = 0;i<array.length-1;i++){
array[i] = input.nextDouble();
}
使用[0,100)随机数初始化数组
for(int i = 0;i<array.length;i++){
array[i] = Math.Random()*100;
}
用for循环打印数组也与其类似;
foreach循环
Java支持一个简便的for循环,即foreach循环,不使用下标变量就可以顺序遍历整个数组。
for(double e: array){
System.out.println(e);
}
可以读作"对array中每个元素e进行以下操作",变量e必须声明为array中元素相同的类型
当需要以其他顺序遍历数组或改变数组中的元素时,依旧要使用下标变量。
二维数组
二维数组通过行和列的下标来访问
创建方式:
int[][] matrix = new int[5][5];
int matrix[][]//可以但不推荐
创建一个5行5列的二维数组,并将其赋给matrix,第一个下标表示行,第二个表示列,元素都是int型。
例如将7赋值给第二行第三个元素时
matrix[2][3] = 7;
//数组初始化简写
int[][] array = {
{1,2,3},
{4,5,6},
{7,8,9}
};//此时array[0][0]=1,array[0][1]=2以此类推
获取二维数组的长度
二维数组实际上是一个其中每个元素都是一个一维数组的数组。数组array的长度是数组中的元素个数,用数组matrix来表示:matrix[0]、matrix[1]等都是一维数组,每个数组里面有5个元素,也就是5个数组里面各有5个元素
不规则数组
例:
int[][] array = {
{1,2,3,4},
{5,6,7},
{8,9},
{10}
};
若不知道不规则数组的值但知道其长度:
int[][] array = new int[4][];
array[0] = new int[4];
array[1] = new int[3];
array[2] = new int[2];
array[3] = new int[1];