文章目录
一.一维数组
数组是一种数据结构,用来存储同类型的集合
1.一维数组的定义和初始化
一维数组通用的声明方式:类型名[] 数组名;
- 先声明后初始化:
int[] arr;
arr=new int[5];
//数组中包含 5 个元素,每一个元素的初始值都是系统分配的int 类型的默认值 0
- 声明的同时进行初始化:
(1)int[] arr=new int[]{1,2,3,4,5};
//指定元素初始值
(2)int[] arr=new int[5];
//指定元素个数,每一个元素的初始值都是系统分配的int 类型的默认值 0
注:一维数组的错误定义方式
(1)int[] arr=new int[];
//error:定义的时候需要指定元素个数或者指定元素初始值
(2)int[] arr=new int[5]{1,2,3,4,5};
//error:指定元素个数和指定元素初始值操作不能同时进行
2.一维数组的存储
一维数组的内存结构
例题
int[]arr={1,2,3,4,5};
int[]brr=new int[arr.length+1];
brr[5]=6;
arr=brr;
System.out.println(arr[5]);
- 运行结果: 6
- 分析如图
3.一维数组的遍历
3.1 for 遍历
for(int i=0;i<arr.length;i++){}
3.2 for each 遍历
for each语句: for(int a:arr){}
注:for(int value : arr)的意思就是说,遍历arr数组,每次遍历的整型用i 这个变量去接收。
for(int value:arr){}
//相当于:
int value=0; //用于接收arr数组中的某一个对象
for(int j = 0;j<arr.length;j++)
{
value = arr[j];
}
- Arrays .toString()
4.一维数组的拷贝
4.1 数组名.clone();
4.2 Arrays.copyof(原数组,拷贝数组长度);
4.3 System.arraycopy(src, srcPos, dest, destPos, length);
注:System.arraycopy(src(原数组), srcPos(原数组拷贝的起始位置), dest(目标数组), destPos(从目标数组的此位置开始拷贝), length);
4.4 for 循环进行拷贝
5.一维数组的扩容
二.二维数组
二维数组:一维数组中每一个元素类型不再是一个基本数据类型的元素,而是一个引用数据类型,分布指向一个一维数组在堆上存储的地址。
1.二维数组的定义和初始化
(1)int[][] arr={{1,2,3},{4,5,6},{7,8,9}};
(2)int[][] arr=new int[3][3];
(3)int[][] arr={new int[3],new int[3],new int[3]};
(4)int[][] arr=new int[3][];//相当于定义了二维数组里的行数
arr[0]=new int[3];//分别定义每一行中的存放的元素类型,也是一个一维数组
arr[1]=new int[3];
arr[2]=new int[3];
二维数组中每一行的元素个数不一定相等,每一行元素个数不相等二维数组就称为交错数组
例:
public class TestDemo {
public static void main(String[] args) {
int[][] arr = new int[3][];
arr[0] = new int[4];
arr[1] = new int[2];
arr[2] = new int[8];
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]);
}
System.out.println();
}
}
}
2.二维数组的存储
二维数组的内存结构