Java-Object
1 | Class {@code Object} is the root of the class hierarchy. Every class has {@code Object} as a superclass. All objects, including arrays, implement the methods of this class. |
源码介绍如上。
1.hashcode()
1 |
|
native修饰的方法,不由java实现,hashcode()方法就是将该对象再内存中的位置转换为整数然后返回,所有的对象由JVM管理。
2.equals()
1 | public boolean equals(Object obj) { |
==即判断两者的内存地址是否相同。
对于String来说,其重写了equals()函数,先判断内存地址然后再判断内容。
需要注意的是必须保证如果两者的equals()为true,那么hashcode()相同。即重写的话也要先判断内存地址是否相同,然后对于不同的情况再判断其他的。
建议但不强制对于不相等的对象的hashCode一定要不同。
3.clone()方法
1 | /* |
只包含了部分注释,这一部分注释解释了该函数的内容:
如果该类没有实现Cloneable接口,会抛出CloneNotSupportedException异常。
如果实现了Cloneable接口,那么该方法将会创建该类的新实例,并且初始化所有字段,字段的内容本身不是克隆的。 从而,这种方法执行此对象的“浅拷贝”,而不是“深拷贝”操作
4.toString()
1 | //It is recommended that all subclasses override this method. |
返回类名+@+哈希值(内存地址转换而成)
5.wait(), notify(), notifyAll()
java的线程同步函数
1 |
|
6.finalize()函数
1 | @Deprecated(since="9") |
finalize()方法就是再JVM确定已经没有任何线程可以访问该对象,那么将会清空该内存区域,如果其他类又使用了该类将会报异常。抛出的是Throwable,说明除了常规的异常Exceprion外,还有可能是JVM错误。当一个对象在回收前想要执行一些操作,就要覆写Object类中的finalize( )方法。
@Deprecated(since=”9”)表示自从JDK9已废除该方法