在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. jmeter 实战

    JMeter 接口测试 什么是接口测试 概念 内部接口 方法与方法之间的交互 模块与模块之间的交互 一种调用对外包装的接口 Web接口分类 web接口分类:https.http.webService ...

  2. USACO2006 Backward Digit Sums /// 全排列 oj24212

    题目大意: 给出杨辉三角的顶点值M和底边数的个数 N (1 ≤ N ≤ 10) ,求出底边各个数的值,其中各个数范围都为1 ~ N 当N=4,M=16时可能是这样的   3   1   2   4  ...

  3. Spark运行基本流程

  4. vim 命令行模式 操作指令

      复制n行: nyy 粘贴:p 剪切(删除)n行: ndd 剪切 ( 删除 ) n个字符:nx 移动光标到第一行 : gg 移动光标到最后一行 : G 设置格式  :gg=G 返回上一次操作前(撤销 ...

  5. vba取局域网电脑共享文件夹下的Excel文件

    Private Sub CommandButton1_Click()    Dim xlapp1 As Excel.Application    Dim xlbook1 As Excel.Workbo ...

  6. mysql的几种启动方式

    mysql的四种启动方式: 1.mysqld 启动mysql服务器:./mysqld --defaults-file=/etc/my.cnf --user=root 客户端连接: mysql --de ...

  7. css---8 过渡属性刨析

    1.       transition-property 默认值为 all,表示所有可被动画的属性都表现出过渡动 可以指定多个 property 属性值: none 没有过渡动画. all 所有可被动 ...

  8. [JZOJ4331] 【清华集训模拟】树

    题目 题目大意 给你一棵带点权的树,求将树变成一堆不相交的链,而且这些链的权值和非负的方案数. 正解 显然这道题是个\(DP\). 首先求个前缀和\(sum\). 为了后面讲述方便,我这样设:\(f_ ...

  9. [JZOJ1904] 【2010集训队出题】拯救Protoss的故乡

    题目 题目大意 给你一个树形的网络,每条边从父亲流向儿子.根节点为原点,叶子节点流向汇点,容量为无穷大. 可以给一些边扩大容量,最多总共扩大\(m\)容量.每条边的容量有上限. 求扩大容量后最大的最大 ...

  10. Bootstrap FileInput.js + springmvc uploadFile

    下载FileInput.js          http://plugins.krajee.com/file-input/demo     https://github.com/kartik-v/bo ...