在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. USACO06JAN The Cow Prom /// tarjan求强联通分量 oj24219

    题目大意: n个点 m条边的图 求大小大于1的强联通分量的个数 https://www.cnblogs.com/stxy-ferryman/p/7779347.html tarjan求完强联通分量并染 ...

  2. ES6 学习 -- Promise对象

    1.promise含义:可以将promise对象看成是一个容器,它保存着未来才会结束的某个事件(一般是异步操作事件)的结果,各 种异步操作都可以用promise对象来处理promise的特点:(1)p ...

  3. SPN扫描利用

    一.利用环境: 在内网渗透的信息收集中,机器服务探测一般都是通过端口扫描去做的,但是有些环境不允许这些操作.通过利用 SPN 扫描可快速定位开启了关键服务的机器,这样就不需要去扫对应服务的端口,有效规 ...

  4. GetOpenFilename的基本用法

    GetOpenFilename '一.概述基本语法 Application.GetOpenFilename 方法 显示标准的“打开”对话框,并获取用户文件名,而不必真正打开任何文件,只是把打开文件名称 ...

  5. 神经网络 (1)- Alexnet

    文章目录 模型结构 conv1层 conv2层 conv3层 conv4层 conv5层 FC6全链接图: fc7全连接层:和fc6类似. fc8链接层: 模型优化 选择ReLU作为激活函数 多GPU ...

  6. python中与time模块和datetime模块相关操作

    使用time模块计时程序运行时长 import time time_start = time.time() #程序主体部分 time_end = time.time() print('总耗时: ', ...

  7. chattr和lsattr命令,不能被删除、改名、设定链接关系,同时不能写入或新增内容

    chattr和lsattr命令详解 chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现.同样-D检查压缩文件中的错误的功能, ...

  8. Hexo 博客图片添加至图床---腾讯云COS图床使用。

    个人博客:https://mmmmmm.me 源码:https://github.com/dataiyangu/dataiyangu.github.io 腾讯云官网 登录注册 创建存储桶 进入上面的存 ...

  9. 关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )

    PO 即Persistence Object VO 即Value Object PO 和VO 是Hibernate 中两个比较关键的概念. 首先,何谓VO,很简单,VO 就是一个简单的值对象. 如:  ...

  10. niginx相关命令及代理配置

    安装 in mac https://www.cnblogs.com/meng1314-shuai/p/8335140.html Nginx相关命令 mac下启动: 通过brew 安装install 后 ...