Java源码阅读----Object类
创始人
2025-05-28 20:07:32
0

Object源码阅读

文章目录

      • Object源码阅读
        • (1)registerNatives()
        • (2)getClass()
        • (3)hashCode()
        • (4) equals(Object obj)
        • (5)clone()
        • (6) toString()
        • (7)notify()
        • (8) notifyAll()
        • (9) wait(long timeout)
        • (10)finalize()

首先我们来看一下这个类的描述:

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

翻译:

类 {@code Object} 是类层次结构的根。
每个类都有 {@code Object} 作为超类。 
所有对象,包括数组,都要实现这个类的方法。

下面我们来看一下Object类中有哪些方法,以及这些方法的作用:

(1)registerNatives()

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

上面这段代码是当类加载时执行的静态代码块,进行本地方法注册。

Java程序有两种方法:java方法和本地方法

  • Java方法是由Java语言编写,编译成字节码,存储在class文件中。Java方法是平台无关的,通过JVM加载字节码运行。
  • 本地方法在Java类中定义,用native进行修饰,且只有方法定义,没有方法实现。本地方法是由其他语言(比如C,C++,或者汇编)编写,编译成处理器相关的机器代码,并保存在动态连接库中,Java类不需要实现这些方法。当Java程序调用本地方法时,JVM通过加载本地方法的动态连接库,找到对应方法并执行相关代码。

registerNatives()方法的作用就是将Java代码中定义的本地方法和本地方法的实现连接起来,当Java程序调用一个本地方法时,就可以直接执行本地方法代码,不需要JVM再去定位并连接。

(2)getClass()

public final native Class getClass();

class是一个类的属性,能获取该类编译时的类对象,而getClass()是一个类的方法,它是获取该类运行的类对象

(3)hashCode()

public native int hashCode();

在Java 中, hashCode() 方法的主要作用就是为了配合哈希表使用的。 哈希表(Hash Table),也叫散列表,是一种可以通过关键码值(key-value)直接访问的数据结构,它最大的特点就是可以快速实现查找、插入和删除。

(4) equals(Object obj)

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

equals() 的作用是用来判断两个对象是否相等。 既然Object.java中定义了equals()方法,这就意味着所有的Java类都实现了equals()方法,所有的类都可以通过equals()去比较两个对象是否相等。

(5)clone()

protected native Object clone() throws CloneNotSupportedException;

Object clone() 方法用于创建并返回一个对象的拷贝。

clone 方法是浅拷贝,对象内属性引用的对象只会拷贝引用地址,而不会将引用的对象重新分配内存,相对应的深拷贝则会连引用的对象也重新创建。

(6) toString()

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

toString() 方法用于返回对象的字符串表示形式

(7)notify()

public final native void notify();

notify() 方法用于唤醒一个在此对象监视器上等待的线程。 如果所有的线程都在此对象上等待,那么只会选择一个线程,选择是任意性的,并在对实现做出决定时发生。 一个线程在对象监视器上等待可以调用wait() 方法。 notify() 方法只能被作为此对象监视器的所有者的线程来调用。

(8) notifyAll()

public final native void notifyAll();

notifyAll() 方法用于唤醒在该对象上等待的所有线程。 notifyAll() 方法跟notify() 方法一样,区别在于notifyAll() 方法唤醒在此对象监视器上等待的所有线程,notify() 方法是一个线程。

(9) wait(long timeout)

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

wait() 方法让当前线程进入等待状态。 直到其他线程调用此对象的notify() 方法或notifyAll() 方法。 当前线程必须是此对象的监视器所有者,否则还是会发生IllegalMonitorStateException 异常。

(10)finalize()

protected void finalize() throws Throwable { }

finalize() 方法用于实例被垃圾回收器回收的时触发的操作。 当GC (垃圾回收器) 确定不存在对该对象的有更多引用时,对象的垃圾回收器就会调用这个方法。

相关内容

热门资讯

新冠疫情防控预防措施 新冠疫情防控预防措施  新冠疫情防控预防措施(精选22篇)  在发展不断提速的社会中,我们都不可避免...
小学世界无烟日活动方案 小学世界无烟日活动方案  为了确保事情或工作得以顺利进行,常常需要提前制定一份优秀的方案,方案具有可...
幼儿园室内亲子游戏活动方案 幼儿园室内亲子游戏活动方案(通用14篇)  为了确保活动取得实效,常常需要提前制定一份优秀的活动方案...
教师节活动方案 教师节活动方案(15篇)  为了确保工作或事情能高效地开展,常常需要预先准备方案,方案是阐明行动的时...
幼儿园春季运动会活动方案 幼儿园春季运动会活动方案(精选10篇)  为了确定工作或事情顺利开展,时常需要预先制定一份周密的方案...
中秋节促销活动方案 中秋节促销活动方案 15篇  为了确保事情或工作得以顺利进行,常常需要提前进行细致的方案准备工作,方...
六一亲子活动方案 六一亲子活动方案集合六篇  为确保事情或工作顺利开展,往往需要预先进行方案制定工作,一份好的方案一定...
春节倒计时朋友圈文案 春节倒计时朋友圈文案(精选85句)  无论是在学校还是在社会中,越来越多人钟情于发布文案,文案用以分...
校庆主题活动策划方案 校庆主题活动策划方案  xxx创建于xxx年xxx月xxx日。在迈向新世纪之际,学校决定在xxx年x...
情人节朋友圈文案 情人节朋友圈文案15篇  在学习、工作乃至生活中,大家都看到过文案吧,文案具有在理智上启发人们,在情...
培训学校的VIP制度 培训学校的VIP制度VIP会员制度策划方案12一.策划目的1了解顾客2.根据会员信息和消费行为分类进...
铝施工方案 铝模板施工方案万科科学城A21、A22工程项目模板工程施工方案文件编号:KS2011002编制单位:...
会议系统方案 会议系统方案(通用5篇)  为了确保工作或事情能高效地开展,通常需要提前准备好一份方案,方案是书面计...
迎新晚会节目策划方案 迎新晚会节目策划方案(精选11篇)  为了确保我们的努力取得实效,常常需要预先准备方案,方案一般包括...
中秋月饼销售方案 中秋月饼销售方案  中秋是中国的一个传统节日,在中秋佳节少不了就是我们的月饼了,下面是unjs小编搜...
八月一号发朋友圈文案 八月一号发朋友圈文案  八月的到来让我们的心情有没有变的好起来了,让我们将七月的烦恼全部都抛在脑后一...
文案转正述职报告 文案转正述职报告  随着社会不断地进步,报告使用的次数愈发增长,报告中提到的所有信息应该是准确无误的...
营销活动策划方案 营销活动策划方案(15篇)  为了确保事情或工作得以顺利进行,通常会被要求事先制定方案,方案可以对一...
孩子开学朋友圈说说 孩子开学朋友圈说说  希望孩子虚心的学习,有特长之处加强学,不断上进,不足之处要加强学习,力争具有高...
开学的优秀文案 开学的优秀文案  随着移动互联网和社交网络的飞速发展,越来越多人习惯于在线上发布文案,文案在生活中是...