这里写自定义目录标题
Object方法
从宏观看object方法总共有9个,首先声明的是object是一切对象的父方法,所以这些方法对于任何一个类来说都有这些方法具体分析各个方法的作用是什么.
registerNatives
让Jvm发现你本地的功能
private static native void registerNatives();
static {
registerNatives();
}
getClass
返回正在运行的class 类,一般当我们在多线程的时候想看那个线程正在执行的时候可以查看
public final native Class<?> getClass();
hashcode
可以想象数组的索引,表示Hash码值
public native int hashCode();
重写hashcode
public static int hashCode(boolean value) {
return value ? 1231 : 1237;
}
equal
从equal可以看出我们比较的是对象的引用,他其实与== 没有差别, 但是为什么我们认为他是比较的内容?因为我们重写了他
public boolean equals(Object obj) {
return (this == obj);
}
//重写,比较的是内容
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
equal与Hashcode区别
equal其实和hashcode 都是比价的印象引用,但是在某种情况下,equal相等但是Hashcode一定相等,你可以理解为,但是hashcode不相同的时候,equal可以相同,
为什么有了Hashcode还会有equal呢
因为equal效率比较低,他比较全面并且复杂,就像equal相等hashcode一定相等,但是hashcode相同equal不一定相同,所以我们在比较的时候先比较hashcode,如果hashcode都不相等,equal绝对不相等
Clone
赋值一份引用
protected native Object clone() throws CloneNotSupportedException;
toString
有的时候我们打印类的时候加上tostring,会发现是XX@244545, 这其实就是他的格式,一般情况下我们都会重写它
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
notify
他的作用就是唤醒等待的线程
public final native void notify();
notifyALL
他的作用就是唤醒所有等待的线程
wait
他的作用就是让线程是否锁,处于等待状态
notify和wait
notify和wait是一对,一般在发布订阅只可以使用
finalize
他的作用主要就是当jvm进行垃圾回收之前会执行,用于释放资源,在释放资源之前她会先检查一下该对象的状态是否可达,一般情况下不要调用,因为会抛异常,如果已经释放资源,你依旧调用这个时候就会抛出异常
protected void finalize() throws Throwable { }
总结
没有做不到的,只有不想做的 lucky O(∩_∩)O~