Arrays:操作数组的工具类
注意事项:
1、二分法查找元素 binarySearch()
细节1:二分法查找的前提:数组中的元素必须是有序,在Java中要求数组中的元素必须是升序
细节二:如果要查找的元素是存在的,那么返回的是查找元素的索引;如果要查找的元素是不存在的,返回的是(- 插入点 - 1)
2、数组拷贝 copyOf(原数组,新数组长度)
细节:方法的底层会根据第二个参数来创建新的数组,
如果新数组的长度小于老数组的长度,会部分拷贝;
如果新数组的长度等于老数组的长度,会完全拷贝;
如果新数组的长度大于老数组的长度,会补上默认初始值0
2、数组拷贝 copyOfRange(原数组,起始索引,结束索引)
细节:包头不包尾,包左不包右。即“【 ,)”
3、排序 sort(数组)
细节:默认情况下,给基本数据类型进行升序排序,底层使用的是快速排序
4、排序 sort(数组,排序规则)
细节:只能给引用数据类型的数组进行排序,如果数组是基本数据类型,需要变成其对应的包装类
Math:进行数学计算的工具类
public static double sqrt(double a) 返回a的平方根
public static double cbrt(double a) 返回a的立方根
Object
注意事项:
1、toString()
当我们打印一个对象的时候,底层会调用对象的toString方法,把对象变成字符串,默认情况下,打印的就是地址值。可以重写toString 方法去打印属性值
结论:如果我们打印一个对象,想要看到属性值的话,那么重写toString方法就可以了。在重写的方法中,把对象的属性值进行拼接。
2、比较两个对象是否相等 equals()
如果没有重写equals方法,那么默认使用Object中的方法进行比较,比较的是地址值是否相等
可以对其进行重写,重写之后比较的是对象内部的属性值
补充:
字符串(String类)中的equals方法,先判断参数是否为字符串,如果是字符串,再比较内部的属性。但如果参数不是字符串,直接返回false
StringBuilder中的equals方法,该类没有重写equals方法,使用的是Object中的,默认是使用==号比较的是两个对象的地址值。
3、对象克隆 clone()
方法的底层会帮我们创建一个对象,并把对象中的数据拷贝过去。
书写细节:
1、重写Object中的clone方法
2、让javabean类实现Cloneable接口
3、创建原对象并调用clone就可以了
Cloneable接口:如果一个接口里面没有抽象方法,表示当前的接口是一个标记性接口,Cloneable表示一旦实现了,那么当前类的对象就可以被克隆,如果没有实现,当前类的对象就不能克隆。
克隆分类:
1、浅克隆:不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝过来
2、深克隆:基本数据类型拷贝过来、字符串复用、引用数据类型会重新创建新的
Objects:对象工具类
Objects是一个对象工具类,提供了一些操作对象的方法
注意事项:
1、Objects.equals(s1,s2)
细节一:方法的底层会判断s1是否为null,如果为null,直接返回false
如果s1不为null,那么就利用s1再次调用equals方法。根据s1的数据类型,查看javebean中是否重写了equals方法。
包装类:基本数据类型对应的引用类型
Integer
注意事项:
Integer() 和 valuOf()方法获取对象的区别:
valuOf(): 在实际开发中,-128~127之间的数据,用的比较多,如果每次使用都是new对象,那么太浪费内存了,所以,提前把这个范围之内的每一个数据都创建好对象,如果要用到了不会再创建新的,而是返回已经创建好的对象,所以地址值相同。
Integer():是Integer的构造出方法,使用时,每次都是new了一个新的对象
Integer成员方法
注意事项:
1、类型转化 parseInt()
在类型转化的时候,括号中的参数只能是数字不能是其他,否则代码会报错
8种包装类中,除了Character都有对应的parseXxxa的方法,进行类型转换