Object类是类层次结构的根。 每个类都有Object类作为超类。所有对象(包括数组)都实现此类的方法。
Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入。Object类没有定义属性,一共有13个方法,大多数是native方法,具体的类定义结构如下图:-
类构造器 public Object()
Object类中没有显性的创建构造器,是由编译器默认提供的无参构造器 -
registerNatives()
其主要作用是将C/C++中的方法映射到Java中的native方法,实现方法命名的解耦。函数的执行是在静态代码块中执行的,在类首次进行加载的时候执行。 -
getClass()
用final修饰,此方法不可以重写,返回运行时的类对象 -
hashCode()
返回对象的哈希码,是一个整数。 在运行期间,若用于equals方法的信息或者数据没有修改,name同一个对象多次调用此方法,返回的哈希码是相同的。而在两次独立的运行java程序时,对于同一对象,不需要返回的哈希码相同。如果根据equals方法,两个对象相同,则这两个对象的哈希码一定相同 。假如两个对象通过equals方法比较不相同,那么这两个对象调用hashCode也不是要一定不同,相同也是可以的。但是使用者应该知道对不同的对象产生不同的hashCode是可以提高hash tables的性能的。 -
equals()
equals方法主要是比较两个对象是否相同,Object中的equals方法比较的是对象的内存地址是否相同。 -
clone()
创建并返回此对象的副本,子类必须实现java.lang.Cloneable接口才能使用此方法,否则会抛出CloneNotSupportedException -
toString()
如果不重写此方法那么返回的是“类名@+十六进制无符号的哈希码” -
notify(),notifyAll()
notify()唤醒正在等待此对象监视器的单个线程,notifyAll()唤醒所有线程,选择是任意的。方法只能在同步代码块中执行。 -
wait()三连
调用此方法所在的当前线程等待,直到在其他线程上调用此对象notisfy()/notisfyAll()方法,或超过指定的超时时间量。方法只能在同步代码块中执行。 -
finalize()
垃圾回收有关
网友评论