import sun.util.resources.LocaleData;
import javax.lang.model.type.ArrayType;
import java.sql.SQLOutput;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Locale;
public class Text {
public static void main(String[] args) {
// toString:将数组变成字符串 // 底层还是Stringbuilder拼接字符串
System.out.println("-----------------toString----------------------");
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
System.out.println(Arrays.toString(arr));
// binarySearch:二分查找法查找元素
// 细节1: 二分查找的前提:数组中的元素必须是有序的,数组中的元素必须是升序的
// 细节2: 如果要查找的元素是存在的,那么返回的是真实的索引
// 但是,如果要查找的元素使不存在的,返回的是 -插入点-1
// 疑问: 为什么要减1呢?
// 解释: 如果此时,我要查找数字0,那么返回的值是-插入点,就会出现问题了
// 如果要查找数字0,此时0是不存在的,但是按照上面的规则-插入点应该就是-0
// 为了避免这样的情况,java在这个基础上-1
System.out.println("-------------------binarySearch---------------------");
System.out.println(Arrays.binarySearch(arr, 10)); // 9
System.out.println(Arrays.binarySearch(arr, 2)); // 1
System.out.println(Arrays.binarySearch(arr, 20)); // -11 = -10 -1
// copyOf拷贝数组
// 参数一:老数组
// 参数二:新数组的长度
// 方法的底层会根据第二个参数来创建新数组
// 如果新数组的长度是小于老数组的长度,会部分拷贝
// 如果新数组的长度是等于老数组的长度,会完全拷贝
// 如果新数组的长度是大于老数组的长度,会默认补上初始化值
System.out.println("-------------------copyOf-------------");
int[] newArr1 = Arrays.copyOf(arr, 10);
System.out.println(Arrays.toString(newArr1)); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
// copyOfRange:拷贝数组(指定范围)
// 包头不包尾,包左不包右
System.out.println("---------------------copyOfRange-------------");
int[] newArr2 = Arrays.copyOfRange(arr, 0, 9); // 包含0索引不包含9索引, [1, 2, 3, 4, 5, 6, 7, 8, 9]
System.out.println(Arrays.toString(newArr2));
// fill:填充数组
System.out.println("----------------fill----------------");
Arrays.fill(arr, 100);
System.out.println(Arrays.toString(arr));
// sort:排序。默认情况下,给基本数据类型进行升序排列(底层是快速排序)
System.out.println("-----------------------sort------------------------");
int[] arr2 = {10,2,3,5,6,1,7,8,4,9};
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
}
}