Object类

Object类

Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每个类都由它扩展而来。

定义Java类时如果没有显示的指明父类,那么就默认继承了 Object 类。例如:

public class Demo extends Object{
在Java中,只有基本类型不是对象,例如数值、字符和布尔型的值都不是对象,所有的数组类型,不管是对象数组还是基本类型数组都是继承自 Object 类。

Object 类定义了一些有用的方法,由于是根类,这些方法在其他类中都存在,一般是进行了重载或覆盖,实现了各自的具体功能

在这里插入图片描述
1.方法列表
procted Object clone()创建并返回此对象的一个副本。

boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。

protected void finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。
Class<?> getClass()返回此 Object 的运行时类。

int hashCode()返回该对象的哈希码值。

void notify()唤醒在此对象监视器上等待的单个线程。

void notifyAll()唤醒在此对象监视器上等待的所有线程。

String toString()返回该对象的字符串表示。

void wait()在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。

void wait(long timeout)在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待。
void wait(long timeout, int nanos)在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。
object clone()浅拷贝
2 方法说明
2.1 clone方法保护方法,实现对象的浅复制,只有实现了 Cloneable 接口才可以调用该方法,否则抛出 CloneNotSupportedException 异常。

2.2 getClass 方法final 方法,获得运行时类的类型。

2.3 toString 方法返回一个 String 对象,用来标识自己。该方法用得比较多,一般子类都有覆盖。

2.4 finalize 方法该方法用于释放资源。因为无法确定该方法什么时候被调用,很少使用。(更多关于 finalize 方法,请移步Java面试大纲系列:final, finally, finalize 的区别)

2.5.equals 方法该方法是非常重要的一个方法。一般 equals 和 是不一样的,但是在 Object 中两者是一样的。子类一般都要重写这个方法。

2.6 hashCode 方法该方法用于哈希查找,重写了 equals 方法一般都要重写 hashCode 方法。这个方法在一些具有哈希功能的 Collection 中用到。一般必须满足 obj1.equals(obj2) true。 可以推出 obj1.hashCode() obj2.hashCode(), 但是 hashCode 相等不一定就满足 equals。 不过为了提高效率,应该尽量使上面两个条件接近等价。(更多关于 equals 方法和 hashCode 方法,请移步Java面试大纲系列:equals与==的区别)

2.7 wait 方法wait 方法就是使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。wait() 方法一直等待,直到获得锁或者被中断。wait(long timeout) 设定一个超时间隔,如果在规定时间内没有获得锁就返回。调用该方法后当前线程进入睡眠状态,直到以下事件发生。
(1)其他线程调用了该对象的 notify 方法。
(2)其他线程调用了该对象的 notifyAll 方法。
(3)其他线程调用了 interrupt 中断该线程。
(4)时间间隔到了。此时该线程就可以被调度了,如果是被中断的话就抛出一个InterruptedException 异常。

2.8 notify 方法该方法唤醒在该对象上等待的某个线程。2.9 notifyAll 方法该方法唤醒在该对象上等待的所有线程。从对 Object 类中方法有哪些,具体怎么用,可以看出你平常是否阅读过源码,是否主动去关注一些常用类的底层实现。不管是刚入行的新手还是工作很多年的大神,我觉得基础都是很重要。Java 基础语法是其他一切的基石,需要牢固掌握,不局限于1-3年Java面试大纲中列举的这些。下一篇文章开始,将开始 Java 基础的第二模块 Java 常用集合,将学习 List、Set、Map 等常用集合的用法,使用注意事项,以及部分核心源码解析。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值