Object所有方法及重写equals和hashCode()方法

第一节: object 的方法

1.hashcode() 内存地址机器位,理解成内存地址即可。每个对象唯一

2、equals() 原生的是判断是否属于同一个对象

public boolean equals(Object obj) {
return (this == obj);
}

可以看到如果equals()如果没有被重写的话,比较的是对象的地址,String,Integer等包装类里面都重写了该方法,例如String类的equals()方法是比较对象的内容,也就是字符串的,而不是地址

3、getClass()
4、 clone()
5.toString()
可以看到返回的字符串是由对象的名称和对象的hashcode组成的
6.finalize()
子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。
7.notify(),notifyAll(),wait()

第二节:看看hashMap怎么get一个对象
e.hash == hash && ( k = e.key || key.equals(k) )
哈希值相等,并且 是 (同一个对象地址或者equals)

相同对象没什么问题,但是不同的对象key,可能hashCode不同,但是hash值可能相同,因为我们put进去的一般是按照值来算,不同对象相同值的key如果不重写equals,则永远不会相等,导致问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值