Object

API:应用程序接口(ApplicationProgramingInterface);jdk提供的类,类已经将底层的代码封装了起来,不需要担心是如何实现的,只要会用就行。

Object类(祖宗类,基类,超类,上帝 大部分类都直接或者间接继承自该类,继承的意思懂吧就是,他的方法,所有子类都具有一下是一些方法列举。)
(1)方法摘要
1)Object clone(),创建并返回此对象的一个副本
2)boolean equals(对象),判断其他某个对象是否与此对象相等,如果其他类中没有重写equals方法,那么就会调用祖宗类的这个方法。注意与==的区别
3)finalize(),垃圾回收机制里面的方法,当GC确定不存在该对象的引用时就会调用
4)getClass(),返回此Object的运行时类
5)int hashCode(),返回该对象的哈希码值,可以提高比较时的效率,降低访问的次数。提高哈希表性能。如果两个对象相同,那么调用该方法,返回的整数结果必须相同。

6)notify(),唤醒在此对象监视器等待的单个线程,与notifyAll()对应,那是唤醒所有。
7)wait()导致当前线程等待。里面的参数也可以不同

8) toString(),返回该对象的字符串表示 ,也就是所谓的转换为字符串方法,基本上大部分类都有这个方法,万能的。建议所有子类都重写这个方法。Object返回的是一个字符串:该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
问题:hashCode()的作用??
举个例子,当向集合中插入对象时,如何判别在集合中是否已经有该对象了,大多数人会向导调用equals方法来逐一比较,方法可行,但是如果数据多了,效率是个大问题。此时当集合要添加新的对象时,先调用这个对象的hashCode()方法,得到hashCode实际上在HashMap的具体实现中会用一个table保存已经存进去的对象的hashcode值,如果table中没有该hashcode值,它就可以直接存进去,不用再进行任何比较了;如果存在该hashcode值, 就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址,所以这里存在一个冲突解决的问题,这样一来实际调用equals方法的次数就大大降低了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值