Object的方法有哪些

本文内容如有错误、不足之处,欢迎技术爱好者们一同探讨,在本文下面讨论区留言,感谢。

Object介绍

  1. Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入;
  2. Object类是所有Java类的祖先。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。可以使用类型为Object的变量指向任意类型的对象;

Object中方法汇总

  1. getClass()
  2. hashCode()
  3. equals()
  4. wait()
  5. notify()
  6. notifyAll()
  7. finalize()
  8. toString()
  9. clone()

Object 方法介绍

getClass()

返回一个对象的class对象,class对象是描述对象所属类的对象(就是运行时类的对象)。该方法一般配合反射使用,使用方法:Object.getClass()

hashCode()

返回对象的哈希码值,默认在Object中的实现是返回该对象内存地址的int类型,哈希码主要用在java.util.HashMap 散列(又叫哈希)表中。

equals()

判断某个对象(A)是否与此对象(this)”相等“,这里的相等是equals()方法逻辑进行判断的,相等返回true,否则false。equals()可被重写,但是要遵循4个特性:自反、对称、传递、一致。重写equals()必须要重写hashCode(),如果两个对象equals()返回true,那么他们的hashCode必须相同。反之则不必然。基本数据类型没有equals(),使用== 运算符进行判断值是否相等。equals()同时也要注意在Set集合中的使用,如果对象A和对象B通过equals()返回true,那么Set的add()方法只能保存一个对象,如果先保存对象A,在添加B时返回false,Set集合中保存的是A。

wait()

导致当前的线程等待,直到其他线程调用此对象的notify()方法或notifyAll()方法。线程进入等待状态(WAITING),可以调用重载方法wait(timeout) 则线程会进入超时等待(TIMED_WAITING)状态,可以在指定的时间后返回。

notify()

唤醒在此对象监视器上等待的单个线程。如果有多个线程等待一个对象,这个方法只会唤醒其中一个线程,选择哪个线程取决于操作系统对多线程管理的实现。

notifyAll()

唤醒在此对象监视器上等待的所有线程。唤醒后的线程Entry Set锁池中进行竞争获取锁,此时线程的状态是运行(RUNNABLE)严格来说是就绪(ready),不过此时运行包含就绪和运行中(running)。

finalize()

当垃圾收集器确定不存在对该对象的引用时,由对象的垃圾回收器调用此方法。如果实现了这个方法,对象可能(逻辑中重新赋予一个引用)在这个方法中再次复活,从而避免被GC回收。但是这个方法不保存一定会被执行,因此不要在这个方法里面做任何有关资源关闭的操作,否则可能出现BUG,而排查不到。

toString()

返回该对象的字符串表示。默认返回格式如下:对象class名称 + @ + hashCode十六进制字符串

clone()

创建并返回此对象的一个副本。被克隆的对象必须实现java.lang.Cloneable接口,否则会抛出CloneNotSupportedException异常。默认使用该方法进行拷贝是:浅拷贝,只拷贝引用的地址。

关联

Objects工具类

发布了56 篇原创文章 · 获赞 14 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/feng_xiaoshi/article/details/103545828