Compareable接口
对于给数组中的变量成员排序,我们能想到用sort,根据成员之间的大小进行排序,那么如果数组中的成员是对象的话,单单只是用sort去排序肯定是步成功的,因为并不知道要根据什么去排序,
这时要使用就要Compareable接口,并重写其中的compareTo方法,这样排序就会根据你写的方法来排序
compareTo这个方法的返回值是int类型的,如果你想要按照升序的方法排序,那么就返回一个大于0的数,降序则是一个小于0的值,这里Compareable接口里面已经是实现了排序的方法,而这个方法是根据compareTo这个方的放回值来确定排序的升降
Comparator接口也能实现该操作,且能比Comparable要简便,且更加的灵活
sort能传入一个使用了comparator接口的
,再进行排序时就会根据传入对象中的compare方法去对数组成员进行排序,而comparable接口在重写了compareTo方法后,排序的顺序就已经确定了,不能灵活的去选择排序方法
Cloneable接口
Cloneable接口可以用来拷贝对象
具体实现
1,要使用这个接口 2,在之类中国重写这个方法
3,在mian函数的后面加上 throws CloneNotSupportedException 这个的意思的向程序上声明说这里可能胡有个叫CloneNotSupportedException的异常(敬请期待)
4,clone这个方法的返回值为object类,在赋值时需要强转为clone_this
clone方法是把成员都拷贝到一个新的空间,但如果拷贝的类里面有类的话,只会拷贝这个类的地址
结果是把着三个类中的new_name都改了,说明这个类并没有被克隆,那如果要clone这个类的话,就要使用深拷贝了
深拷贝就是在Name这个类里面也实现克隆这个接口,然后再clone_this里面克隆这个Name类
先拷贝外面这个clone_this类这时就完成了成员的克隆,但是这时clone_this这个类里面中的Name这个类并没有被克隆,那么就通过new_name调用clone这个方法,并件克隆好的对象在赋值给new_name
Object类
在java中所有类都默认继承了Object类,也可以说Object类是所有类的父类,可以用object类去接收所有类,发生向上转型
equal 方法
若用equal去比较俩个类,那么比较的其实是类的地址
那么如过要根据具体类里面的成员去比较,那么就要重写这个方法
所以在比较俩对象中的成员是否相同,一定要重写equal方法
hashcode方法重写
hashcode
当我们调用了hashcode方法,他会根据内置的算法给我们算出一个具体的数,可以理解为地址
那么如果我们想要根据对象的成员来判断是否相同,那么就要重写这个方法
END