Object类中常用的方法
- protected Object clone () //负责对象克隆的
- int hashCode () //获取对象哈希值的一个方法
- boolean equals (Object obj) //判断两个对象是否相等
- String toString () //将对象转换成字符串形式
- protected void finalize () //垃圾回收器负责调用的方法
1.toString () 方法
toString ()方法的设计目的是:通过调用这个方法可以将“Java对象”转换成“字符串表示形式”
SUM公司开发Java语言的时候,建议所有的子类都去重写toString ()方法
toString ()方法应该是一个简洁的、详实的、易阅读的。
输出引用的时候,会自动调用该引用的toString ()方法
String类已经重写toString () 方法
2.equals 方法
SUM公司设计equals 方法的目的:equals 方法是判断两个对象是否相等的。
在Object类中的equals 方法当中,默认采用的是“==”判断两个Java对象是否相等,而 == 判断的是两个Java对象的内存地址,我们应该判断两个Java对象的内容是否相等。所以equals 方法不够用,需要子类重写equals 方法
判断两个Java对象是否相等,不能使用“==”,因为在两个Java对象判断时 == 比较的是两个对象的内存地址
比较两个字符串不能使用==,必须调用equals 方法,String类已经重写equals 方法了
Java中基本数据类型比较是否相等,使用==
3. finalize () 方法
在Object类中的源代码:
protected void finalize () throws Throwable()
GC:负责调用 finalize () 方法
finalize () 方法只有一个方法体,里面没有代码,而且这个方法是 protected 修饰的
这个方法不需要程序员手动调用,JVM的垃圾回收器负责调用这个方法
不像equals 和 toString () 方法是需要你写代码调用的
finalize () 只需要重写,重写完将来自动会有程序来调用
finalize () 方法的执行时机:
当一个Java对象即将被垃圾回收器回收的时候,垃圾回收器负责调用 finalize () 方法
- finalize () 方法实际上是SUN公司为Java程序员准备的一个时机,垃圾销毁时机。
如果希望在对象销毁时机执行这一段代码的话,这段代码要写到 finalize () 方法中
静态代码块的作用
static{
……
}
静态代码块在类加载时刻执行,并且只执行一次
这是一个SUM准备的类加载时机
finalize () 方法同样也是SUM为程序员准备的一个时机
这个是垃圾回收时机
项目开发中如果有业务需求:所有对象在JVM中被释放的时候,记录一下释放时间。这个负责记录时间的代码写到 finalize () 方法中
提示:
Java中的垃圾回收器不是轻易启动的
垃圾太少,或者时间没到,种种条件下,
有可能启动,也有可能不启动
System.gc(); // 建议启动垃圾回收器。(只是建议,可能不启动,也可能启动)
4.hashCode ()方法
在Object()中的hashCode () 方法是:
public native int hashCode () ;
这个方法不是抽象方法,带有 native 关键字,底层调用C++程序
hashCode ()方法返回的是哈希码:
实际上就是一个Java对象的内存地址,经过哈希算法,得出的一个值。
所以 hashCode () 方法的执行结果可以等同看做一个Java对象的内存地址。