标签:数据 下标 alt 包括 成功 war 重载 bubuko 4.4
开始讲解之前,先列出本章的提纲,如下图所示:
数组是具有相同数据类型的一组数据的集合。
数组中的每个元素具有相同的数据类型。
可根据数组的维数将数组分为一维数组、二维数组……
1.先声明,再用new运算符进行内存分配
int arr[];
arr = new int[5];
2.声明的同时为数组分配内存
int month[] = new int[12];
说明:使用new关键字为数组分配内存时,整型数组中各个元素的初始值都为0。
int arr[] = new int[]{1, 2, 3, 5, 25};
int arr2[] = {34, 23, 12, 6};
int day[] = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
for (int i = 0; i < 12; i++) {
System.out.println((i + 1) + "月有" + day[i] + "天");
}
输出结果如下图所示:
1.先声明,再用new运算符进行内存分配
int myArr[][];
myArr = new int[2][4];
int myArr[][] = new int[2][];
myArr[0] = new int[4];
myArr[1] = new int[4];
2.声明的同时为数组分配内存
int myArr[][] = new int[2][4];
int myArr[][] = {{12, 0}, {45, 10}};
初始化二维数组后,要明确数组的下标都是从0开始的,例如,上面的代码中myArr[1][1]的值是10,赋值语句为:myArr[1][1] = 20;
int a[][] = new int[3][4]; for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { System.out.print(a[i][j]); } System.out.println(); }
输出结果如下图所示:
说明:对于整型二维数组,创建成功之后系统会赋给数组中每个元素初始值为0。
int b[][] = new int[][]{{1}, {2, 3}, {4, 5, 6}}; for (int k = 0; k < b.length; k++) { for (int c = 0; c < b[k].length; c++) { System.out.print(b[k][c]); } System.out.println(); }
输出结果如下图所示:
int arr[][] = {{4, 3}, {1, 2}}; System.out.println("数组中的元素是:"); int i = 0; for (int x[] : arr) { i++; int j = 0; for (int e : x) { j++; if (i == arr.length && j == x.length) { System.out.print(e); } else { System.out.print(e + "、"); } } }
输出结果如下图所示:
int arr[] = new int[5]; Arrays.fill(arr, 8); for (int i = 0; i < arr.length; i++) { System.out.println("第" + i + "个元素是:" + arr[i]); }
输出结果如下图所示:
fill方法还提供了一个重载,可以指定填充的范围从索引fromIndex(包括)一直到索引toIndex(不包括),如果fromIndex == toIndex,则填充范围为空。
int arr[] = new int[]{45, 12, 2, 10}; Arrays.fill(arr, 1, 2, 8); for (int i = 0; i < arr.length; i++) { System.out.println("第" + i + "个元素是:" + arr[i]); }
输出结果如下图所示:
注意:如果指定的索引位置大于或者等于要进行填充的数组的长度,则会报出ArrayIndexOutOfBoundsException(数组越界)异常。
int arr[] = new int[]{23, 42, 12, 8}; Arrays.sort(arr); for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); }
输出结果如下图所示:
int arr[] = new int[]{23, 42, 12}; int newArr[] = Arrays.copyOf(arr, 5); for (int i = 0; i < newArr.length; i++) { System.out.println(newArr[i]); }
输出结果如下图所示:
int arr[] = new int[]{23, 42, 12, 84, 10}; int newArr[] = Arrays.copyOfRange(arr, 0, 3); for (int i = 0; i < newArr.length; i++) { System.out.println(newArr[i]); }
输出结果如下图所示:
int arr[] = new int[]{4, 25, 10}; Arrays.sort(arr); int index = Arrays.binarySearch(arr, 0, 1, 8); System.out.println(index); // 输出-2
int arr[] = new int[]{1, 8, 9, 4, 5}; Arrays.sort(arr); int index = Arrays.binarySearch(arr, 4); System.out.println(index); // 输出1
String str[] = new String[]{"ab", "cd", "ef", "yz"}; Arrays.sort(str); int index = Arrays.binarySearch(str, 0, 2, "cd"); System.out.println(index); // 输出1
关于6.5节,数组排序的3种算法,在后续博客中分别一一讲解……
标签:数据 下标 alt 包括 成功 war 重载 bubuko 4.4
原文地址:https://www.cnblogs.com/zwwhnly/p/10104024.html