Java对象的祖宗Object类

Java为每一个对象都定义了一个父类,那就是object类,此类位于java.lang包中,这是个所有Java类的共同父类,称为基类或者根类,其作用主要是定义一些所有对象都应该拥有的共同方法。
object是所有类的父类或者间接父类,Java规定所有没有使用extends显示继承的类,都默认继承于object。
下面来看看object中一些常见的方法:

  1. getClass()
public final native Class<?> getClass();

这个方法用于返回当前类的字节码文件,字节码文件主要用于反射机制。
2. hashCode()

public native int hashCode();

用于返回当前对象的hash值,这个哈希值是根据一定的算法计算得出来的,此方法在判断或者对比中十分有用,例如,在hashSet中,要求对象必须实现hashCode方法,因为hashSet将会按照这个方法所获得的hash值进行排序,如果hash值相同,则认为是相同对象,拒绝保存。
3. equal()

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

此方法用于判断当前对象是否跟传入对象地址值相等,因为使用的是==比较运算符,也就是说比较的是对象本身是否为同一个对象,而不是比较对象所存储的数据,一般来说建议所有对象覆写此方法,用于判断自己所关心的数据,例如,当对象代表的是学生时,我们可以认为学生的学号相等就是同一个学生,这时就可以覆写这个方法,改为判断学号。
4. clone()

protected native Object clone() throws CloneNotSupportedException;

这个方法将当前对象复制一份,并返回给调用者。值得注意的是这分为浅克隆和深克隆两种,浅克隆仅仅克隆对象本身,深克隆会将当前调用的对象喝它所包含的对象都克隆一遍。克隆的最大用途就是能将对象像值传递那样传到方法里,方法里的操作不会影响原对象。
5. toString()

public String toString() {
 return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

这个方法用于返回对象的字符串表达形式,默认是类名@哈希值,官方建议覆写此方法,返回业务所关心的形式。
6. notify()

public final native void notify();

线程唤醒方法,用于随机唤醒一个正在等待的线程。因为每一个对象或者类都可以被设置为对象锁,所以每个对象都有一个锁池,存放因为失去锁资源而休眠的线程,这个方法的作用就是从锁池中随机唤醒一个线程,使其进入竞争资源的队列中,排队等候时间片,注意,并非一唤醒就立即执行唤醒的线程,唤醒之后还是需要排队等候时间片。
7. notifyAll()

public final native void notify();

和notify方法相似,不同在于这个方法会将所有锁池对象都唤醒,而不是仅仅唤醒一个。
8. wait()

public final native void wait(long timeout) throws InterruptedException;

用于将线程阻塞,当线程调用wait方法之后,会让出cpu资源,自己进入等待状态,此时线程将会进入锁池中,重新排队等锁资源。而sleep方法虽然也是进入阻塞状态,但是不会释放锁资源,所以有一句话说的“抱着锁睡觉”说的就是sleep方法。

  1. finalize()
protected void finalize() throws Throwable { }

这个方法是垃圾回收机制的一个方法,表示将当前对象标记为垃圾,等待gc删除,一般不会手动调用这个方法,而是由虚拟机自动调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
并查集维护到祖宗距离是指在并查集的数据结构中,除了记录每个元素的父节点外,还记录了每个元素到其祖宗节点的距离。这样可以在查找祖宗节点的同时,更新每个元素到祖宗节点的距离。这个功能可以通过路径压缩来实现。路径压缩是指在查找祖宗节点的过程中,将路径上的每个节点的父节点直接指向祖宗节点,从而减少后续查找的时间复杂度。在路径压缩的过程中,还可以同时更新每个节点到祖宗节点的距离。这样,在后续的操作中,可以直接通过查找元素的祖宗节点来获取元素到祖宗节点的距离,而无需再次进行计算。引用\[1\]中的代码是一个实现路径压缩的示例,其中的d数组就是用来记录每个元素到祖宗节点的距离。引用\[2\]和引用\[3\]中也提到了路径压缩的概念和实现方式。 #### 引用[.reference_title] - *1* [AcWing 238. 银河英雄传说--(维护size和到祖宗节点距离)带权并查集](https://blog.csdn.net/qq_45748404/article/details/117967117)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [算法基础课—数据结构(六) 并查集](https://blog.csdn.net/Yttttttttttttttt/article/details/117067020)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值