Object类的

120 阅读2分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路.

本文档由该视频整理所得

clone——克隆对象

protected native Object clone() throws CloneNotSupportedException;

hashCode——获取对象哈希值

public native int hashCode ();
  1. 这个方法带有native关键字,底层调用c++程序。
  2. hashCode方法返回的是哈希码:实际上就是一个java对象的内存地址,经过哈希算法,得出的一个值。

equals——判断两个对象是否相等

public boolean equals(Object obj) {
        return (this == obj);
}
  1. 建议自己定义的类重写该方法,因为object中的equals方法比较的是两个对象的内存地址,我们应该比较内容,所以需要重写。重写规则:自已定,主要看是什么和什么相等时表示两个对象相等。
  2. string类是sun编写的,所以string类的equals方法重写了。
  3. 常用重写格式如下:
@override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) 
	return false;
将对象o进行向下强制类型转换;
return 业务逻辑需要的比较;

toString——将对象转换成字符串形式

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
  1. Object中的实现为:返回类名@对象的内存地址通过hashCode方法转换为十六进制的字符串。
  2. 建议自己定义的类重写该方法,重写规则,越简单越明了就好。
  3. 使用System.out.println(引用)时,这里会自动调用引用对象的toString()方法。
  4. string类是sun写的,该类的toString方法已经重写了。

finalize——垃圾回收器负责调用

protected void finalize() throws Throwable { }
  1. 当一个java对象即将被垃圾回收器回收的时候,垃圾回收器负责调用finalize()方法。
  2. finalize()方法实际上是sun公司为java程序员准备的一个时机,垃圾销毁时机。如果希望在对象销毁时机执行一段代码的话,这段代码要写到finalize()方法当中。
  3. 调用System.gc(),相当于建议JVM启动垃圾回收机制。