数组
一维数组
1. 一维数组声明
- 一维数组的声明方式:
type var[ ]; 或 type[ ] var;
2. 一维数组初始化
-
动态初始化: 数组声明(为数组元素分配内存空间)与赋值操作分开进行。
int[ ] arr = new int[3];
arr[0] = 3;
arr[1] = 9;
arr[2] = 8; -
静态初始化: 在定义数组(分配内存空间)的同时就为数组元素赋值。
int a[ ] = new int[ ] {3, 9, 8};
int[ ] a = {3, 9, 8};
3. 数组元素的引用
- 定义并用new分配空间后,才可以引用数组中的每个元素;
- 数组元素的引用方式:
(1) 使用整型常量或整型表达式;
(2) 数组元素下标从 0 开始,长度为 n 的数组下标的取值范围为[0, n-1],例如 int[] a = new int[3],则可引用的数组元素为a[0]、a[1]、a[2]。 - 每个数组都有一个属性 length 指明它的长度, 例如:a.length 指明数组 a 的长度(数组 a 中元素个数)。
- 数组一旦初始化,其长度是不可变的。
4. 注意
- 使用动态初始化时,数组元素有默认值,数值类型的默认值是 0,对象类型的默认值是 null。
多维数组
二维数组[ ][ ]: 数组中的数组 |
---|
格式1(动态初始化):int[ ][ ] arr = new int[3][2]; |
定义了名称为 arr 的二维数组,二维数组 arr 中有3个一维数组,每一个一维数组中有2个元素,一维数组的名称分别为 arr[0],arr[1],arr[2],给第一个一维数组中脚标为1的元素赋值为78的写法是 arr[0][1] = 78; |
格式2(动态初始化):int[ ][ ] arr = new int[3][ ]; |
二维数组 arr 中有3个一维数组,每一个一维数组中有多少个元素不确定,每一个一维数组都是默认初始化值 null,可以对这3个一维数组分别初始化 arr[0] = new int[3];arr[1] = new int[1]; arr[2] = new int[2]; |
注意:int[ ][ ] arr = new int[ ][3]; //非法 |
格式3(静态初始化):int[ ][ ] arr = new int[ ][ ]{{3, 8, 2},{2, 7},{9, 0, 1, 6}}; |
定义了名称为 arr 的二维数组,二维数组 arr 中有3个一维数组,每一个一维数组中具体元素都已初始化,第一个一维数组 arr[0] = {3, 8, 2},第二个一维数组 arr[1] = {2, 7},第三个一维数组 arr[2] = {9, 0, 1, 6},第三个一维数组的长度表示方法为 arr[2].length; |
注意:int[ ] x, y[ ] arr; x是一维数组,y是二维数组;Java中多维数组不必都是规则形式,例如格式3中的数组。 |
//一维数组中每一个元素都是一个数组,这样的数组就是二维数组
int arr[][] = new int[][] {
{1, 2},
{4, 2}
};
int arr1[][] = new int[2][3];//第一维部分的长度为2,第二维也就是第一维中每个元素的长度为3
例题
public class TestArray {
public static void main(String[] args) {
int k = 0;
int[] array1 = new int[] {2, 3, 5, 7, 11, 13, 17, 19};
int[] array2 = new int[array1.length];
//打印array1的内容
for(int i = 0; i < array1.length; i++) {
System.out.print(array1[i] + " ");
}
System.out.println();
//将array1的值赋给array2,并打印array2
for(int i = 0; i < array1.length; i++) {
array2[k] = array1[i];
k++;
}
for(int i = 0; i < array1.length; i++) {
System.out.print(array2[i] + " ");
}
System.out.println();
//修改array2的偶索引元素,使其等于索引值,并打印修改后的array2
for(int i = 0; i < array2.length; i++) {
if(i % 2 == 0) {
array2[i] = i;
}
}
for(int i = 0; i < array1.length; i++) {
System.out.print(array2[i] + " ");
}
System.out.println();
}
}