java Object class分析

Java Object类是所有Java类的基类,包含一些核心的native方法,如hashCode()用于哈希表,clone()实现对象复制,以及 finalize()在垃圾回收前执行。此外,还涉及到线程交互的notify()、notifyAll()和wait()方法。这些方法深入底层,连接JVM与系统,实现了Java的基本约定和功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Object Class 是所有java类自动继承的父类,看看这个类都有什么成员


private static native void registerNatives();
static {
     registerNatives();
}

关联c函数,类似于将c的函数导入过来,这样你就可以调用c的函数了,主要导入的函数是
static JNINativeMethod methods[] = {
{“hashCode”, “()I”, (void *)&JVM_IHashCode},
{“wait”, “(J)V”, (void *)&JVM_MonitorWait},
{“notify”, “()V”, (void *)&JVM_MonitorNotify},
{“notifyAll”, “()V”, (void *)&JVM_MonitorNotifyAll},
{“clone”, “()Ljava/lang/Object;”, (void *)&JVM_Clone},
}; clone
所以当调用这些方法时,实际上是调用的c函数

public native int hashCode();
按照java约定规范,每个object都应该有一个hashcode值,主要用来支持哈希表,可以考虑这个问题,是怎么保证每个对象的哈希值接近不重复,下面英文描述一种方式是将对象的内部地址转化为一个整数作为hash值,还有一种方式通过对字符进行位运算
* As much as is reasonably practical, the hashCode method defined by
* class {@code Object} does return distinct integers for distinct
* objects. (This is typically implemented by converting the internal
* address of the object into an integer, but this implementation
* technique is not required by the
* Java<font size="-2"><sup>TM</sup></font> programming language.)

protected native Object clone() throws CloneNotSupportedException;
这是一个native方法,按照约定,这个方法是返回一个对象的copy,相当于在内存中把这个对象重新复制了一下,可以研究下copy的深度
copy需要满足的约定:x.clone != x   但x.clone.getClass() == x.getClass() 不是必须的要求。
copy的默认规则,如果是primitive type直接返回,如果是引用类型,返回引用类型,所以注意引用类型
如过一个类支持clone必须实现接口Cloneable,否则抛出CloneNotSupportedException
protected void finalize() throws Throwable { }

java垃圾回收机制规定,在一个对象呗销毁前必须要调用的方法


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

一些方法主要是和线程有关

总结,Object class 主要是一些native方法,用于jvm和系统减进行交互,还有就是实现java一些基本的约定,比如hashcode,clone这些方法的约定




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值