1、Object类
Object类是Java中所有类的基类(超类、父类)
学习Object类就是在学习它的方法
构造方法:
可以直接实例化
Object( )
Object obj = new Object();
主要学习三个方法:
1.toString方法
2.equals方法
3.hashCode方法
这个三个方法都可以有快捷键
1.toString
快捷键:to
public String toString( )
2. equals
boolean equal (Object obj);
public boolean equals(Object obj) {
return (this == obj);
}
Object类下面的方法比较的是两个对象的地址,不看内容
String类下面的equals方法比较的是内容,是因为String类继承Object, 重写了
需求:比较两个对象的内容是否一样?
当父类的需求,满足不了子类的需求的时候要重写父类的方法
3、int hashCode( );
(哈希码值:在Object类下面,将内存地址(十六进制的值)转为十进制的值,此时这个十进制的值就叫hash码。 )
hashCode的注意事项是:
只要在执行Java应用程序时多次在同一个对象上调用该方法, hashCode
方法必须始终返回相同的整数,前提是修改了对象中equals
比较中的信息。 该整数不需要从一个应用程序的执行到相同应用程序的另一个执行保持一致。
如果根据equals(Object)
方法两个对象相等,则在两个对象中的每个对象上调用hashCode
方法必须产生相同的整数结果。
请注意,无论何时重写equals方法,通常需要重写hashCode
方法,以便维护hashCode
方法的通用合同,该方法规定相等的对象必须具有相等的哈希码
2、Set集合
Set集合也是存储数据的,set也是一个接口,父类接口是Collection
存储数据的特征:无序的,不可重复的
Set接口有两个实现类:
HashSet: 依靠hash值进行存储的,如果两个元素hash值一样的话,就不再存储了
TreeSet: 底层是二叉树,对存储数据进行自然排序
2.1、hashSet类
HashSet这个类的方法和Collection接口和Set接口下面一样的
也有自己独有的方法,和ArrayList特别象
2.2、HashSet集合存对象
总结:以后set集合中如果想存对象的时候,要求对象的内容如果一样的 话,不能存到set集合中,咋办?重写equals方法和hashCode方法
hash值不一样,对象一定不一样。 对象一样的话,hash只能一定一样
2.3、TreeSet集合
也是实现了Set集合,可以保证数据 唯一性,存储也是无序的
TreeSet在存储的数据的时候 会排序
2.4TreeSet集合中存的是对象
如果想要在TreeSet集合中添加对象的话
要去实现Comparable这个接口
抽象方法:
将此对象与指定的对象进行比较以进行排序。 返回一个负整数,零或正整数,因为该对象小于,等于或大于指定对象。
stu1.comparetTo(stu2)
总结:
1.Object类 都有快捷键
2.HashSet存对象的时候,一定在类中重写equals和hashCode方法
3.TreeSet存对象的时候,一定要实现一个接口Comparable,重写compareTo方法
比较两个对象某个属性的int类型差值