Object:所有类的超类

Object默认是所有类的父类。

 

以上是Object自带的9个方法。下面我们来详细介绍下这几个方法:

equals :比较的是两个句柄引用的值是否是同一地址,返回true或false;

getClass :反射获取类信息;

hashCode :获取对象的散列码(哈希就是散列),散列代表无规则的分布,但是分布地相对均匀;通常用数组去实现散列,往数组里面无规律的放数据;

notify :唤醒一个线程,让线程进入就绪状态;

notifyAll :唤醒全部线程;

toString :默认的是输出所属对象的类信息以及对象的地址;

wait :让线程进入等待状态(未就绪状态);

有关equals方法:

Object 类中的 equals 方法用于检测一个对象是否等于另外一个对象。在 Object 类中,这

个方法将判断两个对象是否具有相同的引用。如果两个对象具有相同的引用, 它们一定是相

等的。

字符串对equals进行了重写,所以只对比字面意思。

getClass 方法将返回一个对象所属的类。

有关hashCode方法:

散列码( hash code ) 是由对象导出的一个整型值。散列码是没有规律的。如果 x 和 y 是两个不同的对象, x.hashCode( ) 与 y.hashCode( ) 基本上不会相同。可能会相等。

如果有两个不同的对象,他们的hasCode一定不相等?(不对,有一定概率相等。)

如果两个对象的hashCode不相等,那么这两个对象一定不相等,是两个独立的对象?(正确的。)

重写equals方法一定要重写hashCode方法。为什么?因为hashmap中需要用equals和hashCode进行协同工作,equals判断两个对象值是否相等,然后由根据hashcode存储。

String重写了equals让s和t地址相等,也伴随重写了hashCode(string类中不再根据地址计算散列码,而是根据字符串的具体内容导出),所以表5-2中s和t的散列码相等。

字符串 s 与 t 拥有相同的散列码, 这是因为字符串的散列码是由内容导出 的。而字符串缓冲 sb 与 tb却有着不同的散列码, 这是因为在 StringBuffer 类中没有定义 hashCode 方法,它的散列码是由 Object 类的默认 hashCode 方法导出的对象存储地址。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值