学习Java之day07
1.操作数组的工具类
java.util.Arrays:操作数组的工具类,里面定义了很多操作数组的方法
public class ArrayTest {
public static void main(String[] args) {
// 1.boolean equals(int[] a,int[] b):判断两个数组是否相等。
int[] arr1 = new int[] { 11, 22, 33 };
int[] arr2 = new int[] { 11, 22, 33 };
boolean isEquals = Arrays.equals(arr1, arr2);
System.out.println(isEquals);
// 2.String toString(int[] a):输出数组信息。
System.out.println(Arrays.toString(arr1));
// 3.void fill(int[] a,int val):将指定值填充到数组之中。
Arrays.fill(arr1, 10);
System.out.println(Arrays.toString(arr1));
// 4.void sort(int[] a):对数组进行排序。
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
//5.int binarySearch(int[] a,int key) 查找指定的值
int[] arr3 = new int[]{-98,-34,2,34,54,66,79,105,210,333};
int index = Arrays.binarySearch(arr3, 210);
if(index >= 0){
System.out.println(index);
}else{
System.out.println("未找到");
}
}
}
2.算法的考查
/*
算法的考查:求数值型数组中的最大值、最小值、平均数、总和等
定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,
然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。
要求:所有随机数都是两位数。
*/
public class ArrayTest1 {
public static void main(String[] args) {
// 定义一个长度为10的数组
int[] arr = new int[10];
// 随机赋值
for (int i = 0; i < arr.length; i++) {
//值是只要10到100的数
arr[i] = (int) (Math.random() * (99 - 10 + 1) + 10);
}
// 遍历
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
System.out.println();
// 求最大值
int maxValue = arr[0];
for (int i = 0; i < arr.length; i++) {
if (maxValue <= arr[i]) {
maxValue = arr[i];
}
}
System.out.println("最大值为:" + maxValue);
// 求最小值
int minValue = arr[0];
for (int i = 0; i < arr.length; i++) {
if (minValue >= arr[i]) {
minValue = arr[i];
}
}
System.out.println("最小值为:" + minValue);
// 求总和
int sumValue = arr[0];
for (int i = 0; i < arr.length; i++) {
sumValue+=arr[i];
}
System.out.println("数组的总和为:" + sumValue);
//求数组的平均值
int avgValue = sumValue/arr.length;
System.out.println("数组的平均数为:" + avgValue);
}
}
/*
算法的考察:数组的复制、反转、查找(线性查找、二分查找)
*/
public class ArrayTest2 {
public static void main(String[] args) {
String[] arr = new String[] { "JJ", "DD", "MM", "BB", "GG", "AA" };
// 1.数组的复制(区别于数组的赋值arr1 = arr)
// String[] arr1 = arr;//这是数组的赋值操作
String[] arr1 = new String[arr.length];
for (int i = 0; i < arr.length; i++) {
arr1[i] = arr[i];
}
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i] + " ");
}
System.out.println();
// 2.数组的反转
// 方法一:
// for (int i = 0; i < arr.length / 2; i++) {
// String temp = arr[i];
// arr[i] = arr[arr.length - i - 1];
// arr[arr.length - i - 1] = temp;
// }
// 方法二:
for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
// 遍历
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
// 查找
// 线性查找
String dest = "BB";
dest = "HH";
boolean flag = true;
for (int i = 0; i < arr.length; i++) {
if (dest.equals(arr[i])) {
System.out.println("找到了指定位置的元素:" + i);
flag = false;
break;
}
}
if (flag) {
System.out.println("没有找到了指定位置的元素.");
}
// 二分查找法:(熟练)
// 前提:所有查找的数组必须是有序的
int[] arr2 = new int[] { -98, -