Java_Day8(JDK API文档的使用,二维数组)
JDK API文档的使用
Arrays 是专门针对数组操作的一个工具类
- 二分查找法:
// 在当前数组范围内查找目标元素
//如果找到,则返回目标元素在完整数组中的索引
int res1 = Arrays.binarySearch(arr,2);
System.out.println(res1);
- 排序算法:
//使用Arrays提供的排序算法对数组进行排序
Arrays.sort(arr);
// 包含开始位置 的 元素 但是不包含结束位置的元素
Arrays.sort(arr,2,5);
- 源码解读:
private static int binarySearch0(int[] a, int fromIndex, int toIndex, int key) {
int low = fromIndex;
int high = toIndex - 1;
while (low <= high) {// 循环比较
int mid = (low + high) >>> 1;// 计算中间位置 使用了无符号右移 相当于除2
int midVal = a[mid];
if (midVal < key)
low = mid + 1;
else if (midVal > key)
high = mid - 1;
else
return mid; // 找到则直接返回元素所在的索引
}
return -(low + 1); //没有找到 则返回负数
}
- 将数组转换为String类型:
//将数组转换为String
String arrStr = Arrays.toString(arr);
System.out.println("----" + arrStr);
- Random:
public static void main(String[] args) {
Random random = new Random();
//返回一个伪随机数 bound 返回的是任意的随机整数
System.out.println(random.nextInt());
//返回一个伪随机数 bound 返回的是0--100之间的数
System.out.println(random.nextInt(100));
}
Math的Random方法:
//Math的Random的方法
System.out.println((int)(Math.random() * 80 + 20) );
- 数组的拷贝:
public class ArrayCopyTest {
public static void main(String[] args) {
int[] arr= {21, 35, 20 ,12, 65, 5, 56};
int[] dest = new int[3];// 目标数组的长度必须大于等于源数组才可以
/*
int[] src,拷贝的 源数组
int srcPos,拷贝的源数组的起始位置
int[] dest,// 拷贝的目标数组
int destPos, //拷贝到目标数组中的放入的 起始位置
int length,// 拷贝 的元素的个数
*/
System.arraycopy(arr,0,dest,0,arr.length);
for(int x : dest){
System.out.println(x);
}
}
}
二维数组
二维数组的声明及动态初始化:
- int[][] arr = new int[行数][列数];
public class ArrayTwoDemo {
public static void main(String[] args) {
/*
在声明二维数组的时候 两个维度 一个维度表示行 另一个维度表示列
行列可以相同 也可以不同
当我们通过 arr.length去获取数组的长度的时候 其实获取到的是数组的行数
*/
int[][] arr = new int[5][3];
System.out.println(arr.length);
// 给二维数组中的元素赋值
arr[0][0] = 2;
arr[1][1] = 5;
arr[2][2] = 7;
arr[3][2] = 9;
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();
}
}
}
二维数组打的静态初始化:
1.
public class ArrayTwoDemo_01 {
public static void main(String[] args) {
int[][] arr = {{1,2,3},{4}, {7,8},{3,2,1,5,3}, {6,5,4}};
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();
}
}
}
int[][] arr = new int[][]{{1,2,3},{4}, {7,8},{3,2,1,5,3}, {6,5,4}};
- 二维数组的内存分配情况: