Object类 糖不苦

Object类是java语言中的根类,所有类的父类,它里面的所有方法子类都可以使用,一个类没有指定的父类则默认承认继承Object类

to String()方法返回对象的字符串,返回的内容就是类型和内存把地址值,所以需要重写方法

equals()方法指的是判断某个对象是否与此对象“相等”,比较的是内存地址,返回true或faluse

如果比较的话需要重写equals和hashcode方法要注意
1,重写equals方法必须重写hashcode方法
2,重写hashcode方法,不需要重写equals方法
比较两个对象是否为同一个对象,则需要判断地址类型和属性是否一致

equals()方法

Object中的equals方法是直接判断this和obj本身的值是否相等,即用来判断调用equals的对象和形参obj所引用的对象是否是同一对象,
所谓同一对象就是指内存中同一块存储单元,如果this和obj指向的hi同一块内存对象,则返回true,如果this和obj指向的不是同一块内存,则返回false。
注意:即便是内容完全相等的两块不同的内存对象,也返回false。
如果是同一块内存,则object中的equals方法返回true,如果是不同的内存,则返回false

      如果希望不同内存但相同内容的两个对象equals时返回true,则我们需要重写父类的equal方法

      String类已经重写了object中的equals方法(这样就是比较内容是否相等了)

hashCode()方法

返回该对象的哈希码值
该方法用于哈希查找,可以减少在查找中使用equals的次数,重写了equals方法一般都要重写hashCode方法。这个方法在一些具有哈希功能的Collection中用到。
一般必须满足obj1.equals(obj2)true。可以推出obj1.hash- Code()obj2.hashCode(),但是hashCode相等不一定就满足equals。
不过为了提高效率,应该尽量使上面两个条件接近等价。
如果不重写hashcode(),在HashSet中添加两个equals的对象,会将两个对象都加入进去。

原文地址:https://www.cnblogs.com/wwyydd/p/13933391.html