数组小结
一维数组
1. 初始化方式
int[] arr = new int[5]; (推荐使用这种)
int arr[] = new int[]{1,2,3,4,5};
int arr[] = {1,2,3,4,5};
2. 遍历数组
注意:数组的下标是[0,length-1]
最常出现的是数组下标越界异常:java.lang.ArrayIndexOutOfBoundsException
第一种使用for循环
int[] arr = {1, 2, 3};
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
第二种使用增强for循环,即for-each
int[] arr = {1, 2, 3};
for (int x : arr) {
System.out.println(x);
}
3. Arrays类的简单使用
3.1 数组转字符串(将数组中的内容全部打印出来)
int[] arr = {1,2,3,4,5,6};
String newArr = Arrays.toString(arr);
System.out.println(newArr); // 结果 [1, 2, 3, 4, 5, 6]
3.2 数组拷贝
int[] arr = {10,20,30,40,50};
int[] arr1 = Arrays.copyOf(arr, 3);
String str = Arrays.toString(arr1);
System.out.print(str);
//输出:[10, 20, 30] (截取arr数组的3个元素赋值给姓数组arr1)
3.3 数组填充
int[] arr = new int[5];//新建一个大小为5的数组
Arrays.fill(arr, 2,4,6);//给第2位(0开始)到第4位(不包括)赋值6
String str = Arrays.toString(arr);
System.out.print(str);
//输出:[0, 0, 6, 6, 0]
3.4 数组排序
int[] intArray = new int[] { 4, 1, 3, -23 };
Arrays.sort(intArray);//输出: [-23, 1, 3, 4]
String[] strArray = new String[] { “z”, “a”, “C” };
Arrays.sort(strArray);//输出: [C, a, z]
3.5 自己实现八大排序算法
- 冒泡排序
- 选择排序
- 插入排序
- 快速排序
- 归并排序
- 希尔排序
- 堆排序
- 基数排序
二维数组
1. 初始化
int[][] array = new int[3][2];
int[][] a = new int[2][];
a[0] = new int[2];
a[1] = new int[3];
2. 遍历二维数组
第一种使用普通双层for循环
int[][] Arr1 = new int[3][4];
for(int i = 0;i < Arr1.length;i++){ //先遍历行
for(int j = 0;j < Arr1[i].length;j++){ //在根据每一行,逐一遍历各个列
a[i][j] = '*';
System.out.print(Arr1[i][j]+"\t");//从遍历的行和列获取二维表的元素内容。
}
System.out.println();
}
第二种使用增强for循环,即for-each
for(int[] row: Arr1) {//从每一行中获取元素内容
for(int data: row){//从遍历的每行中,在逐个遍历每一列的元素。
System.out.printf("%d\t",data);//这样就获得了二维表的每一个元素的内容
}
System.out.println();
}
3. 二维数组的应用
3.1 杨辉三角
创建二维数组,首尾值都是1,中间值可以从上一行中的值相加得到:a[j][k] = a[j-1][k-1] + a[j-1][k]
public void Yanghuitriangle(int n){
int[][] a = new int[n][n];
a[0][0] = 1;
for (int i = 1; i < n; i++){ //初始化第一列和对角线
a[i][0] = a[i][i] = 1;
}
for (int j =2; j < n; j++){ //计算中间值
for (int k = 1;k < j; k++){
a[j][k] = a[j-1][k-1] + a[j-1][k];
}
}
for (int i =0; i < n; i++){ //输出
for (int j = 0; j <= i;j++){
System.out.print(a[i][j] + "\t\t");
}
System.out.println();
}
}