JDK 11 Object中定义的方法

认识Object类

Class is the root of the class hierarchy. Every class has a Object superclass. All objects,including arrays,implement the methods of this class.

所有类的的根,所以的类都集成了object,包括数组,
即数组在JDK 中也是一个类。

Object 中的方法

1.构造方法

public Object() {}

构造一个新的Object

2.获取运行时的对应类信息

public final native Class<?> getClass();

一个本地方法,获取运行时对象的类,可以联想到 对象在jvm 中的信息 包含了类的地址信息

3.获取对象的hash值

这个方法主要支撑 HashTable 、Map
hash 用于判断对象是否相同

4.对象对比

Indicates whether some other object is “equal to” this one.
判定一个对象是否在jvm 中等于另一个对象,java 是值引用的,所有默认对比内存地址(句柄)
自定义对象可以重写 equal 方法

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

4.复制方法

一个本地方法:

对象克隆 jvm 中会有连个内存地址不同的对象,但是对象对应的class 类是 同一个

此处注意考察 ,深度拷贝 和浅拷贝,
以及 怎么快速复制一个对象,实现深度拷贝

protected native Object clone() throws CloneNotSupportedException;

5.字符串表示对象

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

6.并发相关方法

java多线程相关方法

6.1 唤醒一个线程

Wakes up a single thread that is waiting on this object’s monitor

唤醒一个等待这个对象锁的线程,每个对象在jvm 中都有一个对应的Monitor

深入理解 唤醒的是哪一个,syncronized 非公平锁,看运气吧

public final native void notify();

6.2 唤醒所以线程,重新竞争

public final native void notifyAll();

6.3线程等待

引起竞争这个对象锁的线程等待

 public final void wait() throws InterruptedException {
        wait(0L);
    }

https://my.oschina.net/throwable/blog/4409362

7.finalize()

对象的生命周期有关,jdk9 中被废弃。
强烈不推荐使用此方法, 这个方法本来是针对C++ 风格设计的,java中不推荐使用,JVM 也不会引用你用了这个方法就立刻回收这个对象的 资源。在不熟悉jvm 内部机制的情况下,使用finalize()有可能会影响jvm 垃圾回收机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值