Object-源码
Object的结构

类构造器
一个类必须要有一个构造器的存在 , Object类源码中,是看不到构造器的,系统会自动添加一个无参构造器。
Object obj = new Object();
equals()
/**
* 判断两个对象是否相等
* 主要比较的是内存地址,如果我们要比较两个对象里面的内容是否相等,那么我们就会重写这个方法。
* 注意:重写equals()方法的时候,也一定要重写hashcode()方法。
* 因为java规定:两个对象相等,那么它们的hashcode也一定要相等。
*/
public boolean equals(Object obj) {
return (this == obj);
}
getClass()
/**
* 这个方法被final修饰,不能被子类重写,返回的是这个对象运行的类
*/
public final native Class<?> getClass();
hashCode()
/**
* 主要用来判断两个对象是否相等
* 1:如果两个对象相等,那么它们的hashcode一定相等
* 2:hashcode相等的,这两个对象不一定相等
* 3:hashcode不相等,那么这两个对象一定相等
*/
public native int hashCode();
toString()
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
getClass().getName()是返回对象的全类名(包含包名),
Integer.toHexString(hashCode()) 是以16进制无符号整数形式返回此哈希码的字符串表示形式。
打印某个对象时,默认是调用 toString 方法。
notify()
/**
* final修饰,不能被重写,唤醒一个正在等待对象锁的线程,该方法只能用于同步方法。
*/
public final native void notify();
notifyAll()
/**
* final修饰,不能被重写,唤醒所有正在等待对象锁的线程,该方法只能用于同步方法。
*/
public final native void notifyAll();
wait()
/**
* 在其他线程调用此对象的notify()方法或notifyAll()方法前,导致当前线程等待。
* 当前线程必须拥有此对象监视器。
* 该线程发布对此监视器的所有权并等待,直到其他线程通过调用notify方法或notifyAll方法通知在此对象的监视器上等待的线程醒来,
* 然后该线程将等到重新获得对监视器的所有权后才能继续执行。
*/
public final void wait() throws InterruptedException {
wait(0);
}
finalize()
/**
* 用于对象被回收的时候这个由JVM支持,Object的finalize方法默认是什么都没有做,
* 如果子类需要在对象被回收时执行一些逻辑处理,则可以重写finalize方法。
*/
protected void finalize() throws Throwable {
}
registerNatives()
private static native void registerNatives();
static {
registerNatives();
}
这是一个本地方法,中我们知道一个类定义了本地方法后,想要调用操作系统的实现,必须还要装载本地库.
看到上面的代码,这就明白了吧。静态代码块就是一个类在初始化过程中必定会执行的内容,所以在类加载的时候是会执行该方法的,通过该方法来注册本地方法。
参考链接
https://www.cnblogs.com/ysocean/p/8419559.html
https://www.zhihu.com/question/21574535
Object-源码的更多相关文章
- jdk之object源码理解
Java所有类都继承与Object,本文谈谈我对object源码的理解,如果有错的,请看官多多批评指正. 1.registerNatives() private static native void ...
- Object 源码阅读
Object 源码阅读 /** * Object 类是类继承结构的根类,每一个类型都以 Object 作为其父类,包括数组. */ public class Object { private stat ...
- Object源码
1.Object是所有类的父类,默认会继承Object. 2.Object类中常用的方法有:getClass().hashCode().equals().clone().toString().fina ...
- Object源码分析(二)
第五个方法:protected native Object clone() throws CloneNotSupportedException; 源码简介: clone方法首先会判对象是否实现了Clo ...
- Object源码分析(一)
刚注册博客,准备学习一下java源码,当然首先从Object看起. 介绍一下Object: Object是所有类层次结构的根,所有的类都将Object作为超类.所有的对象,包括数组,都实现了Objec ...
- JDK源码阅读(一):Object源码分析
最近经过某大佬的建议准备阅读一下JDK的源码来提升一下自己 所以开始写JDK源码分析的文章 阅读JDK版本为1.8 目录 Object结构图 构造器 equals 方法 getClass 方法 has ...
- 你真的了解Object源码吗
欢迎点赞阅读,一同学习交流,有疑问请留言 . GitHub上也有开源 JavaHouse 欢迎star 引入 Object 应该是比较简单的源码了.现在我们来分析一下他.Object 是类层次结构的根 ...
- java中Object源码理解
java阅读笔记 1.object getClass() 返回是的此object运行时的类,返回的对象是被object锁定的对象,调用这个方法不需要进行强转 public static void ma ...
- Object源码解析(JDK1.8)
package java.lang; public class Object { /** * 一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用 */ private static ...
- Object源码阅读
native修饰符:所修饰的方法的实现是由非java代码实现的 /** * 一个java程序如果想调用本地方法,需要执行两个步骤 * 1.通过system.loadLibrary()将包含本地方法实现 ...
随机推荐
- py3射击小游戏
关于py3面向对象的小Demo,欢迎 交流. class Person(object):#声明人类 def __init__(self,name): self.name = name self.gun ...
- 利用奇偶数来获取websocket推送时间间隔(或者比较前一个数和下一个数的变化)
利用奇偶数来获取websocket推送时间间隔(或者比较前一个数和下一个数的变化) 在vue中的 data () { return { countTime: 0, newDat ...
- MySql查询上周(周一到周日)每天的日期!土方!
首先介绍一个函数:YEARWEEK(date[,mode]) 主要说明一下后面的可选参数mode,这个参数就是指定一周里面哪一天是第一天. 默认一周是从周日开始,这显然不太符合我们的要求.要指定每周从 ...
- 图解 HTTP 连接管理
熟悉我的小伙伴都知道,我之前肝了本<HTTP 核心总结>的 PDF,这本 PDF 是取自我 HTTP 系列文章的汇总,然而我写的 HTTP 相关内容都是一年前了,我回头看了一下这本 PDF ...
- 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...
- 为VIM添加Python扩展
VIM的自带的脚本功能很强,但只能用在VIM自己上,如果让它支持Python脚本,那简直就无敌了,这个想法当然不是我想出来的,应该说英雄所见略同,于是乎vim7.2就内建了对python2.4的支持, ...
- 能够进行多段文本匹配的NFA改良算法
下面的代码基于NFA算法实现了在多段字符串中匹配正则表达式,对比NFA算法可以看到它将pc由局部变量提升为类成员,以保存中间匹配状态,另外在匹配成功后将pc恢复到null状态.实际使用中,此类还应该增 ...
- Access Java API in Groovy Script
$ cat Hello.java package test; public class Hello { public int myadd(int x, int y) { return 10 * x + ...
- 带你认识5G技术
一.移动通讯的发展历程 1.1.移动通讯具有代际演进规律 "G"代表一代 每10年一个周期,如下图所示: 1.2.5G技术指标对比概述 主要的技术指标有:流量密度.连接数密度.时延 ...
- Http协议中的CharacterEncoding、Content-Encoding和Transfer-Encoding
https://www.cnblogs.com/jinzhiming/p/5765672.html https://www.jianshu.com/p/e918a65b617f https://www ...