Java基础--Object类

Java与C++不同,Java不支持多继承,是一种单根继承结构语言。也就是说,Java中所有的类都有一个共同的祖先,这个祖先就是Object类。

Object类是一个特殊的类,是所有类的父类,如果一个类没有用extends明确指出继承与某个类,那么它默认继承Object类。下边我们通过Object类中的方法来了解Object类。

Object类的结构

如图可知,Object类有12个成员方法,按照用途可以分为以下几种:

  1. 构造函数
  2. hashCode和equals函数用来判断对象是否相等
  3. 线程相关的wait(),wait(long int),notify(),notifyAll()
  4. toString()和getClass
  5. clone()
  6. finalize()用于垃圾回收

Object类中方法的作用

(1)clone()方法

一个protected方法,能够实现对象的浅复制。只有实现了Cloneable接口才可以调用该方法,否则会抛出CloneNotSupportedException异常

(2)getClass()方法

一个final方法,用于获得运行时类的类型。

(3)toString()方法

返回一个String对象,用来标识自己,该方法比较常用,一般子类都有通过重写进行覆盖。

(4)finalize()方法

该方法用于释放资源,因为无法确定该方法什么时候被调用,因此很少使用。

(5)equals()方法

该方法非常重要且经常被使用。equals()方法时用来比较两个对象,但要区别equals和==,==是直接比较两个对象的地址。一般子类都会重写equals方法,如果两个Object进行比较,则equals()方法和==没有区别(源码就是直接使用==来实现equals()方法)。

(6)hashCode()方法

该方法主要用于哈希查找,这个方法在一些具有哈希功能的Collection中会用到,例如HashMap,HashSet等。在哈希查找中,是通过查询hashCode返回的值进行查找,在查找过程中不可避免会用到equals方法进行判断,因此在开发过程中,重写了equals()方法一般都要重写hashCode()方法。

(7)wait方法

wait方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait方法一直等待,一直等到获得锁或者被中断。wait(long timeout)设定了一个超时间隔,如果

在规定时间内没有获得锁就返回。

调用该方法后当前线程进入睡眠状态,直到以下事件发生。

  1. 其他线程调用了该对象的 notify 方法。
  2. 其他线程调用了该对象的 notifyAll 方法。
  3. 其他线程调用了 interrupt 中断该线程。
  4. 时间间隔到了。

此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException 异常。

(8)notify和notifyAll

这两个方法都是用于唤醒线程,只是notify是唤醒等待的某个线程,而notifyAll是唤醒等待的所有线程。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值