在java.lang包下
Object类:是所有类的基类(父类)
public final native Class<?> getClass();
返回这个Object所代表的的运行时类 public native int hashCode();//返回对象hash code 值
如果是两个相同(指用=比较都为true的)的对象调用这个方法,会返回相同的Integer类型的hash码;
如果是两个不相同(指用=比较都为false的)的对象调用这个方法,会返回不同的Integer类型的hash码; /**
* The {@code equals} method for class {@code Object} implements
* the most discriminating possible equivalence relation on objects;
* that is, for any non-null reference values {@code x} and
* {@code y}, this method returns {@code true} if and only
* if {@code x} and {@code y} refer to the same object
* ({@code x == y} has the value {@code true}).
* <p>
*/
public boolean equals(Object obj) {
return (this == obj);
}
返回值表示两个对象是否"相同".true表示"相同",false表示"不相同"。
x.equals(x) 返回true。
非空引用x,y:
如果x.equals(y) 返回true,那么y.equals(x) 也返回true。
具有传递性:
非空引用x,y,z:
如果 x.equals(y) 返回true, y.equals(z) 返回true,那么x.equals(z) 也返回true
如果x非空:
x.equals(null) 返回false。
参数obj代表要与之比较的对象,也就是要被比较de对象。
当equals方法被重写的时候,必须也要重写hashCode方法,确保拥有相同的hash码。 protected native Object clone() throws CloneNotSupportedException;
返回一个复制的对象(注意浅复制、深复制)。
调用这个方法的对象所在的类需要实现Cloneable接口才能使用到此方法,否则会抛出CloneNotSupportedException异常。 public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
返回对象字符串的表现形式 public final native void notify();
唤醒单个线程,但是唤醒的线程不会立马继续执行,直到持有锁的线程释放这个锁,被唤醒的线程将和其他线程一同竞争去获得这个锁。 public final native void notifyAll();
唤醒所有线程,但是唤醒的线程不会立马继续执行,直到持有锁的线程释放这个锁,被唤醒的线程将和其他线程一同竞争去获得这个锁。 public final native void wait(long timeout) throws InterruptedException;
timeout的单位为 毫秒。
让线程进入等待,直到另一个线程调用notify()或notifyAll()方法或者超过了设置的时间timeout 才会停止等待。
当前线程必须拥有对象的监视器(锁)。
如果当前线程在等待之前或等待期间被任何线程中断,则会抛出InterruptedException异常。
如果当前线程不是对象监视器所拥有的,则抛出IllegalMonitorStateException异常。
如果timeout是负数,则抛出IllegalArgumentException异常。 /*@param timeout the maximum time to wait in milliseconds.
* @param nanos additional time, in nanoseconds range
* 0-999999.
* @throws IllegalArgumentException if the value of timeout is
* negative or the value of nanos is
* not in the range 0-999999.
* @throws IllegalMonitorStateException if the current thread is not
* the owner of this object's monitor.
* @throws InterruptedException if any thread interrupted the
* current thread before or while the current thread
* was waiting for a notification. The <i>interrupted
* status</i> of the current thread is cleared when
* this exception is thrown.
*/
public final void wait(long timeout, int nanos) throws InterruptedException {
if (timeout < 0) {
throw new IllegalArgumentException("timeout value is negative");
} if (nanos < 0 || nanos > 999999) {
throw new IllegalArgumentException(
"nanosecond timeout value out of range");
} if (nanos > 0) {
timeout++;
} wait(timeout);
}
nanos:额外的时间,以纳秒为单位,范围在0-999999.
让线程进入等待,直到另一个线程调用notify()或notifyAll()方法或者超过了设置的时间timeout 才会停止等待。
timeout的单位为 毫秒。
让线程进入等待,直到另一个线程调用notify()或notifyAll()方法或者超过了设置的时间timeout 才会停止等待。
当前线程必须拥有对象的监视器(锁)。
如果当前线程在等待之前或等待期间被任何线程中断,则会抛出InterruptedException异常。
如果当前线程不是对象监视器所拥有的,则抛出IllegalMonitorStateException异常。
如果timeout是负数,则抛出IllegalArgumentException异常。
如果nanos范围越界,则抛出IllegalArgumentException异常。 public final void wait() throws InterruptedException {
wait(0);
}
这个方法就像在调用wait(0);
让线程进入等待,直到另一个线程调用notify()或notifyAll()方法或者超过了设置的时间timeout 才会停止等待。 让线程进入等待,直到另一个线程调用notify()或notifyAll()方法或者超过了设置的时间timeout 才会停止等待。
当前线程必须拥有对象的监视器(锁)。
如果当前线程在等待之前或等待期间被任何线程中断,则会抛出InterruptedException异常。
如果当前线程不是对象监视器所拥有的,则抛出IllegalMonitorStateException异常。 protected void finalize() throws Throwable { }
当确定不再有对该对象的引用时,垃圾回收时由对象上的垃圾回收器调用

JDK源码阅读--Object的更多相关文章

  1. jdk源码阅读-Object类

    native 关键字 private static native void registerNatives(); static { registerNatives(); } public final ...

  2. JDK源码阅读(一):Object源码分析

    最近经过某大佬的建议准备阅读一下JDK的源码来提升一下自己 所以开始写JDK源码分析的文章 阅读JDK版本为1.8 目录 Object结构图 构造器 equals 方法 getClass 方法 has ...

  3. JDK源码阅读(三):ArraryList源码解析

    今天来看一下ArrayList的源码 目录 介绍 继承结构 属性 构造方法 add方法 remove方法 修改方法 获取元素 size()方法 isEmpty方法 clear方法 循环数组 1.介绍 ...

  4. JDK源码阅读-Reference

    本文转载自JDK源码阅读-Reference 导语 Java最初只有普通的强引用,只有对象存在引用,则对象就不会被回收,即使内存不足,也是如此,JVM会爆出OOME,也不会去回收存在引用的对象. 如果 ...

  5. 利用IDEA搭建JDK源码阅读环境

    利用IDEA搭建JDK源码阅读环境 首先新建一个java基础项目 基础目录 source 源码 test 测试源码和入口 准备JDK源码 下图框起来的路径就是jdk的储存位置 打开jdk目录,找到sr ...

  6. JDK源码阅读-FileOutputStream

    本文转载自JDK源码阅读-FileOutputStream 导语 FileOutputStream用户打开文件并获取输出流. 打开文件 public FileOutputStream(File fil ...

  7. JDK源码阅读-FileInputStream

    本文转载自JDK源码阅读-FileInputStream 导语 FileIntputStream用于打开一个文件并获取输入流. 打开文件 我们来看看FileIntputStream打开文件时,做了什么 ...

  8. JDK源码阅读-ByteBuffer

    本文转载自JDK源码阅读-ByteBuffer 导语 Buffer是Java NIO中对于缓冲区的封装.在Java BIO中,所有的读写API,都是直接使用byte数组作为缓冲区的,简单直接.但是在J ...

  9. JDK源码阅读-RandomAccessFile

    本文转载自JDK源码阅读-RandomAccessFile 导语 FileInputStream只能用于读取文件,FileOutputStream只能用于写入文件,而对于同时读取文件,并且需要随意移动 ...

随机推荐

  1. HDU 3966 /// 树链剖分+树状数组

    题意: http://acm.hdu.edu.cn/showproblem.php?pid=3966 给一棵树,并给定各个点权的值,然后有3种操作: I x y z : 把x到y的路径上的所有点权值加 ...

  2. docker使用gitlab持续集成(1)

    修改ssh连接端口vi /etc/ssh/sshd_config 写docker-compose.yml文件配置gitlab version: '3' services: gitlab: image: ...

  3. Nginx配置web服务

    Nginx配置虚拟主机 虚拟主机概述 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可以是IP或者端口),具有独立的程序及资源目录,可以独立的对外提供服务,继而给用户访 ...

  4. IRP FLAGS

    IRP所有标识位的含义,是 _IRP . flags 这个成员 IRP_NOCACHE 0x00000001 //表示I/O请求从存储的媒介而不是高速缓存中读取数据 IRP_PAGING_IO 0x0 ...

  5. 如何读懂Web服务的系统架构图

    Web服务的一个重要特点就是流量大.数据多,仅靠一台服务器肯定难以支撑大规模的服务. 所以我们经常会看到诸如以下的一些术语,教人好生不懂: *:系统架构.物理架构.Web服务基础设施 *:应用服务器 ...

  6. arm-linux-copydump 的使用

    生成可以执行的 2 进制代码 [arm@localhost gcc]#arm­linux­copydump ­O binary hello hello.bin

  7. [转]SSM(Spring+SpringMVC+Mybatis)框架搭建详细教程【附源代码Demo】

    一.新建项目 运行IDEA,进入初始化界面,然后我们选择新建项目(进入主界面新建项目也是一样的) 在Maven选项卡里面找到对应的java web选项,然后我们点下一步 这一步填入组织等信息,这里比较 ...

  8. Windows ping

    用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]            [-r count] [-s count] [[-j ...

  9. 「题解」:[loj2763][JOI2013]现代豪宅

    问题 A: 现代豪宅 时间限制: 1 Sec  内存限制: 256 MB 题面 题目描述 (题目译自 $JOI 2013 Final T3$「現代的な屋敷」) 你在某个很大的豪宅里迷路了.这个豪宅由东 ...

  10. 0918CSP-S模拟测试赛后总结

    14名.110分.可以算是几次大落之后的一次小小的崛起?? 然而sdfz的开挂选手AK了啊…… T2重测前rank7我就高兴地像个傻子??也不看看这次T1是个什么题. 实力还是不行.一眼秒掉了简单题, ...