概念:数组是相同类型的数据按顺序组成的一种引用数据类型
特点:
-
类型相同
-
长度固定
以int类型为例
int[] i;
i=new int[5];
int[] j=new int[5];
int[] k=new int[]{1,2,3,4,5};
int[] l={1,2,3,4,5};
数组的组成
- 数组中的每个数据格被称为“数组元素”。
- 对每个元素进行赋值或取值的操作被称为“元素的访问”。
- 访问元素时,需要使用“下标”(从0开始,依次+1,自动生成)。
- 访问的语法:数组名[下标];//例如 存:a[0]=10;取:a[0];
public class TestCreateArray{
public static void main(String[] args){
int[] a=new int[5];//创建数组
a[0]=5;
a[1]=3;
a[2]=4;
a[3]=8;
a[4]=9;//依次赋值
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
System.out.println(a[3]);
System.out.println(a[4]);//依次取值
}
}
运行结果:
数组的下标范围5
3
4
8
9
public class TestCreateArray{
public static void main(String[] args){
int[] a=new int[5];//有效下标范围:0~数组长度-1
a[0]=5;
a[1]=3;
a[2]=4;
a[3]=8;
a[4]=9;
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);
System.out.println(a[3]);
System.out.println(a[4]);
System.out.println(a[5]);//访问无效下标,会导致数组下标越界
}
}
数组的遍历
遍历:从头至尾,逐一对数组的每个元素进行访问
public class TestCreateArray{
public static void main(String[] args){
int[] a=new int[5];
a[0]=5;
a[1]=3;
a[2]=4;
a[3]=8;
a[4]=9;
for(int i=0;i
增强型for循环遍历数组(foreach)
设a为int数组,则
for(int i:a)等价 for(int i=0;i
这种遍历方式是foreach
例子:
public class TestCreateArray{
public static void main(String[] args){
int[] a=new int[5];
a[0]=5;
a[1]=3;
a[2]=4;
a[3]=8;
a[4]=9;
for(int i:a){//等价于 for(int i=0;i
System.out.println(a[i]);//使用循环变量"i"充当下标逐一访问数组每个元素
}
}
}
冒泡排序
对一组整数按照由小到大的顺序进行排序。
public class TestCreateArray{
public static void main(String[] args){
int[] a=new int[5];
a[0]=5;
a[1]=3;
a[2]=4;
a[3]=8;
a[4]=9;
int temp;
for(int i=0;ia[j+1]){
//交换位置
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//打印由小到大的数字
for(int i:a){
System.out.println(a[i]);
}
}
}
二维数组
概念:一维数组中的一维数组;数组中的元素,还是数组。
二维数组创建语法
-
先声明,再分配空间:
数据类型[][] 数组名;
数组名=new 数据类型[高维长度][低维长度];
-
先声明并分配空间
数据类型[][] 数组名=new 数据类型[高维长度][低维长度];
-
声明并赋值(繁):
数据类型[][] 数组名=new 数据类型[高维长度][];//不规则数组,自行new低微数组
-
声明并赋值(简):
数据类型[][] 数组名={{v1,v2,v3},{v4,v5},{v6,v7,v8,v9}};//显示初始化
二维数组的赋值
public class Test2DArray{
public static void main(String[] args){
int[][] array=new int[3][5];
array[0][0]=10;
array[0][3]=20;
array[1][1]=30;
array[1][2]=40;
array[2][4]=50;
}
}
行号/列号 0 1 2 3 4 0 10 0 0 20 0 1 0 30 40 0 0 2 0 0 0 0 50
二维数组的访问
public class Test2DArray{
public static void main(String[] args){
int[][] array=new int[3][5];
array[0][0]=10;
array[0][3]=20;
array[1][1]=30;
array[1][2]=40;
array[2][4]=50;
for(int i=0;i
数组的扩容
- 创建数组时,必须显式指定长度,并在创建之后不可更改长度。
- 扩容思路:
- 创建大于原数组长度的新数组。
- 将原数组中的元素依次复制到新数组中。
- 复制的方式
- 循环将原数组中所有元素逐一赋值给新数组。
- System.arraycopy(原数组,原数组起始,新数组,新数组起始,长度);
- java.util.Arrays.copyOf(原数组,新长度);//返回带有原值的新数组。
地址的替换
- 数组作为引用类型之一,其变量中存储的是数组的地址。
- 完成元素复制后,需将新数组地址,赋值给原变量进行替换。



