Object源码阅读
来源:互联网 发布:js 二维数组匹配 编辑:程序博客网 时间:2024/04/26 19:00
Object源码阅读
native关键字:通过native标识的方法通过JNI(尤其针对Java与C/C++沟通的工具)编译生成头文件接口,本地语言实现接口进行底层调用,编译生成“实现文件名.dll”文件,在native方法所在类中加入System.loadLibrary(”实现文件名”)语句,加载本地方法实现的dll
本地方法实现:getClass、hashCode、clone、notify、notifyAll、wait
getClass方法:final修饰返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
hashCode方法:equals相等的对象,hashCode一定相同;不相等的对象,不要求一定不同(但建议这么做以提高哈希表的性能),一般通过将内部地址转换为一个整数来实现。
hashcode是用于散列数据的快速存取,如利用HashSet/HashMap/Hashtable类来存储数据时,都是根据存储对象的hashcode值来进行判断是否相同的。
这样如果我们对一个对象重写了euqals,意思是只要对象的成员变量值都相等那么euqals就等于true,但不重写hashcode,那么我们再new一个新的对象,
当原对象.equals(新对象)等于true时,两者的hashcode却是不一样的,由此将产生了理解的不一致,如在存储散列集合时(如Set类),将会存储了两个值一样的对象,
导致混淆,因此,就也需要重写hashcode()
equals方法:Object 类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象时,此方法才返回 true(x == y 具有值 true)。 重写equals时建议同时重写hashCode,避免出现equals相等的对象hashCode确不同的情况
public boolean equals(Object obj) { return (this == obj); }
clone方法:protected修饰,重写需实现Cloneable接口。复制一个份数据生成新对象(而不是赋值指向被克隆对象的引用,防止克隆体改变原对象)。分深度克隆(包括引用类型克隆)和浅克隆(基本数据类型克隆,引用数据类型复制引用)概念,引用对象为不可变对象时使用浅克隆。相关知识点:原型模式
toString方法:返回“类名@此对象哈希码的无符号十六进制表示”,建议所有类重写此方法
notify方法:唤醒线程。从等待状态到锁定状态。
notifyAll方法:唤醒全部线程
wait方法:将线程放等待集中(等待一段时间),同时放弃所有同步要求,处于休眠状态(禁用)。
- 唤醒条件:Object.notify()、Object.notifyAll()、Thread.interrupt()、timeout时间片到
- 重载:
wait()同wait(0)
public final void wait() throws InterruptedException { wait(0); }
wait(long timeout) native修饰,本地方法实现
wait(long timeout, int nanos) 加了一个毫秒微差值 1000000*timeout+nanos,更精确
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 >= 500000 || (nanos != 0 && timeout == 0)) { timeout++; } wait(timeout);}
finalize方法:
- 源码阅读1-Object
- 阅读Object类源码
- Object源码阅读
- JDK源码阅读之一-----Object
- Java Object类源码阅读
- [Lua源码阅读] 理解Lua的object
- JDK源码阅读之Object类
- 源码阅读笔记:java.lang.Object
- java源码阅读笔记(1)- Object
- java.lang之java.lang.Object源码阅读及分析
- Tensorflow object detection API 源码阅读笔记:架构
- Tensorflow object detection API 源码阅读笔记:RPN
- Tensorflow object detection API 源码阅读笔记:Mask R-CNN
- Tensorflow object detection API 源码阅读笔记:Fast r-cnn
- Tensorflow object detection API 源码阅读笔记:RFCN
- Object 源码
- Object源码
- 阅读源码
- Java反射机制
- SQL 循环遍历结果集
- kuangbin1(上)
- 【第18题】360校园招聘2015届技术类笔试题
- 搭建Eclipse开发环境
- Object源码阅读
- Java各种版本的区别
- 删除任务
- StateFramework——Android状态通知通信快速开发框架
- 改变Maven内置Tomcat的服务端口
- 【第19题】360校园招聘2015届技术类笔试题
- 利用外部变量将一个数按位累加后逆序输出
- day06总结
- 线段树区间求和——敌兵布阵