批量存储、处理数据的容器
2.特点1、长度固定
2、 类型一致
3.常见异常ArrayIndexOutOfBoundsException 数组越界异常
NullPointerException 空指针异常
使用 1.初始化 1.1.动态初始化
一维数组:数据类型[ ] 数组名 = new 数据类型[数组长度];
二维数组:数据类型[ ][ ] 数组名 = new 数据类型[数组长度][ ];
int[] arr = new int[1]; int[][] arr = new int[2][];
一维数组:数据类型 数组名[ ] = new 数据类型[数组长度];
二维数组:数据类型 数组名[ ][ ] = new 数据类型[数组长度][ ];
int arr[] = new int[1]; int arr[][] = new int[2][];1.2.静态初始化
一维数组:数据类型[ ] 数组名 = new 数据类型[ ]{元素1,元素2,元素3…};
二维数组:数据类型[ ][ ] 数组名 = new 数据类型[ ][ ]{ {元素1,元素2,元素3…} , {元素a,元素b,元素c…} };
int[] arr = new int[]{1,2,3};
int[][] arr = new int[][]{{1,2,3},{4,5,6}};
一维数组:数据类型[ ] 数组名 = {元素1,元素2,元素3…};
一维数组:数据类型[ ][ ] 数组名 = { {元素1,元素2,元素3…} , {元素a,元素b,元素c…} };
int[] arr = new int[]{1,2,3};
int[][] arr = new int[][]{{1,2,3},{4,5,6}};
2.查询
2.1.长度查询
数组名 . length
:数组最大下标 = length-1
int num;
int[] arr = {1,2,3};
num = arr.length; //num = 3
2.2.元素查询
数组名[下标];
int num;
int[] arr = {1,2,3};
num = arr[0] //1
num = arr[1] //2
num = arr[2] //3
2.3二分查找法
// 数据必须先排序
Arrays.sort(arr);
// 获取数据
System.out.println("请输入要查找的数据");
int num = input.nextInt();
// 定义左挡板
int left = 0;
// 定义右挡板
int right = arr.length - 1;
// 定义布尔判断查询结果
boolean bool = true;
// 循环比较
while (left <= right) {
// 获取当前的中间下标
int mid = (left + right) / 2;
// 等于输出
if (num == arr[mid]) {
System.out.println("存在" + num);
// 有结果将布尔值改为false
bool = false;
break;
// 值在中间值右侧 移动左
} else if (num > arr[mid]) {
left = mid + 1;
// 值在中间值左侧 移动右
} else {
right = mid - 1;
}
}
// 无结果输出结果
if (bool) {
System.out.println("不存在" + num);
}
3.赋值
数组名[下标] = 数值;
int[] arr = {1,2,3};
arr[0] = 10; //int[] arr = {10,2,3};
4.遍历
4.1.for循环遍历
//一维数组
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//二维数组
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();
}
4.2.foreach遍历
//一维数组
for (int i : arr) {
System.out.println(i);
}
//二维数组
for (int[] i : arr) {
for (int j : i) {
System.out.print(j);
}
System.out.println();
}
4.3.Array遍历
Arrays.toString(数组名);
System.out.println(Arrays.toString(arr));5.复制 5.1普通复制
int[] arr1 = new int[]{5,7,9};
//不正确的数组复制:
//int[] arr2 = arr1;
//导致arr2和arr1共享空间(使用同一个数组)
//单独创建arr2的空间 长度与arr1一致
int[] arr2 = new int[arr1.length];
//循环 将元素复制
for(int i =0;i
5.2.Array复制
数组名 = Arrays.copyOf(数组名, 数组长度);
:数组扩容在数组长度添加扩容大小即可
:数组名切记不可忽略
//复制 arr = Arrays.copyOf(arr, arr.length); //扩容+2 arr = Arrays.copyOf(arr, arr.length+2);6.排序 6.1.普通排序
//外层循环
for(int m=0;m升序、<降序
if(arr[m]>arr[n]) {
int temp = arr[m];
arr[m] = arr[n];
arr[n] = temp;
}
}
}
6.2冒泡排序
for(int i=0;i升序、<降序
if(arr[j]>arr[j+1]) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
6.3方法排序
Arrays.sort(数组名);
Arrays.sort(arr);7.Arrays方法
排序:Arrays.sort(数组名);
遍历:Arrays.toString(数组名);
复制:数组名 = Arrays.copyOf(数组名, 数组长度);
扩容:数组名 = Arrays.copyOf(数组名, 数组长度+num);



