前言:Object类学习
简介
Java所有的类都会继承Object类,可以说Object类是所有类的父类,Object类位于java.lang包中,该包包含Java最基础和核心的类,编译时会自动导入。
构造方法
默认构造方法
1 | public Object() {} |
clone
创建并返回此对象的副本
该方法是用于拷贝对象的,需要实现java.lang.Cloneable接口,否则会抛出CloneNotSupportedException异常,然后重写Object类的clone方法
,默认是浅拷贝
1 | protected native Object clone() throws CloneNotSupportedException; |
equals
该方法用于比较两个对象,如果这两个对象引用指向的是同一个对象,那么返回true,否则返回false。
1 | public boolean equals(Object obj) { |
finalize
GC准备释放对象所占用的内存空间之前,JVM会调用该对象的finalize()方法,所以该方法只会执行一次。正常情况下,不需要实现这个方法
1 | protected void finalize() throws Throwable { } |
getClass
获取对象的运行时class对象,class对象就是描述对象所属类的对象。这个方法通常是和Java反射机制搭配使用的
1 | public final native Class<?> getClass(); |
hashCode
获取对象的散列值,Object中该方法默认返回的是对象的堆内存地址
1 | public native int hashCode(); |
notify
唤醒一个wait的线程,用于多线程间的通信
1 | public final native void notify(); |
notifyAll
唤醒所有wait的线程,用于多线程间的通信
1 | public final native void notifyAll(); |
registerNatives
RegisterNatives用于实现JNI,该方法顾名思义即注册本地方法,从而实现调用C语言等
1 | private static native void registerNatives(); |
toString
返回一个可代表对象的字符串。默认返回格式如下:对象的class名称 + @ + hashCode的十六进制字符串
1 | public String toString() { |
wait
使线程从运行状态到等待状态,并释放锁。其重载方法则是指定wait时间,用于多线程间的通信
1 | public final void wait() throws InterruptedException { |