Object类功能分析
1 . Object类的api
我们可以看到Objects类是Final的,即不可以被其他类继承,并且它里面的方法都是static的。说明这是一个工具类
接下来我们分析一下他们的功能,废话不说,直接上代码。
1. equals ,deepEquals 比较两个对象是否相等
可以看到equals方法的功能是判断两个对象
是否是同一个对象,
或者两个对象是否相等。
deepEquals就比较严格一点,它的功能是首先比较两个对象是否是同一个对象,然后再调用对象的equals方法。
1)首先它比较两个对象是否是同一个对象; 2) 如果不是,再判断它们是否是矩阵,对于矩阵的每个元素,它们是否是同一个对象 3)最后调用对象的equals方法
2 . 计算对象的hashcode
hashCode(Object),hashCode(Object...)
说明: hashCode(Object)是计算单个对象的hashCode , hashCode(Object...)是计算矩阵的hashCode
没什么说的,对象要是为null , hashCode的值为 0
String hashcode
对于矩阵的hashCode : 计算公式 s[0] * 31 ^ (n -1) + s[1 ] * 31 ^ (n-2) + .... + s[n-1] + 31 ^ n
String的hashCode:计算公式 : s[0] * 31^(n-1) + s[1] * 31 ^ (n-2) + ........ + s[n-1]
可以看出 矩阵的hashCode的计算公式比String的hashCode的计算公式多了一个后缀 31^ n
3. toString
加强版的toString多了一个nullDefault ,当对象为null的时候,默认的toString值 ,我觉得是防御性编程的一种体现
4 .compare 比较
可以看到,方法传入了一个Comparator接口,它是一个函数式接口,这也是函数式编程思想的一种体现。
5. 判断非null requireNonNull(Object) ,requireNonNull(Object,String messgae)
如果对象为Null ,则抛出异常,否则返回这个对象本身
6.判断对象是否为Null
判断对象是否为Null ,返回true,false
总结: Objects的功能 1) 判断是否相等
2)计算hashCode
3)toString
4)compare比较
5 ) 判断对象是否非Null,并返回这个对象
6 )判断对象是否非Null , 返回true,false