Java 关于 Object 类中的 finalize() 和 hashCode() 方法

关于 Object 类中的 finalize() 方法。
1、在 Object 类中的源代码:
protected void finalize() throws Throwable{}
GC:负责调用 finalize() 方法。
2、finalize() 方法只有一个方法体,里面没有代码,而且这个方法是 protected 修饰的。
3、这个方法不需要程序员手动调用,JVM 的垃圾回收器负责调用这个方法。
不像 equals, toString, equals() 和 toString() 方法是需要你写代码调用的。
finalize() 值需要重写,重写完将来自动会有程序来调用。(JVM 调用)
4、finalize() 方法的执行时机:
当一个 java 对象即将被垃圾回收器回收的时候,垃圾回收器负责调用 finalize() 方法。
5、finalize() 方法实际上是 SUN 公司为 java 程序员准备的一个时机,垃圾销毁时机。
如果希望在对象销毁时机执行一段代码的话, 这段代码要写到 finalize() 方法当中。
6、静态代码块的作用是什么?
static{
. . . . . .
}
静态代码块在类加载时刻执行,并且只执行一次。这是一个 SUN 准备的类加载时机。
finalize() 方法同样也是 SUN 为程序员准备的一个时机。这个时机是垃圾回收时机。
7、提示:
java 中的垃圾回收器不是轻易启动的,垃圾太少,或者时间没到,种种条件下,有可能启动,也有可能不启动。

System.gc(); // 建议启动垃圾回收器。(只是建议,可能不启动,也可能启动。启动的概率高一些)

hashCode 方法:
在 Object 中的 hashCode 方法是怎样的?
public native int hashCode();
这个方法不是抽象方法,带有 native 关键字,底层调用 C++ 程序。
hashCode() 方法返回的是哈希码:
实际上就是一个 java 对象的内存地址,经过哈希算法,得出的一个值。
所以 hashCode() 方法的执行结果可以等同看做一个 java 对象的内存地址。

你可能感兴趣的:(java,开发语言)