toString
1.源代码
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
源代码上toString()方法的默认实现是:
类名@对象的内存地址转换为16进制的形式
2.toString的作用:
toString()方法的设计目的是:通过调用这个方法可以将一个"java对象"转换字符串表示形式
3.Sun公司开发java语言的时候,建议所有子类都重写toString方法,toString返回结果应是一个简明但易于读懂的信息表达式。
equals
1.源代码
public boolean equals(Object obj) {
return (this == obj);
}
2.equals的设计目的:
以后编程的过程当中,都要通过equals方法来判断两个对象是否相等
3.判断两个java对象是否相等不能使用“==“,因为”==“比较的是两个对象的内存地址
4.在Object 类中的equals方法当中,默认使用的是”==“判断两个java对象是否相等,而”==“比较的是两个对象的内存地址,我们应该判断两个java对象内容是否相等。所以需要重写equals方法
String类的toString方法和equals方法
1.String类已经重写了equals方法,比较两个字符串不能使用==,必须使用equals
2.String已经重写了toString方法
3.java中基本数据类型比较相等使用==
4.java中所有的引用数据类型统一使用equals方法来判断是否相等
finalize()方法
1.源代码:
protected void finalize() throws Throwable { }
}
gc负责调用finalize()方法
2.finalize()方法中只有一个方法体,里面没有代码,而且者个方法是用protected修饰的
3.这个方法不需要程序员手动调试,JVM的垃圾回收器负责调用这个方法。不像equals,toString方法,需要自己写代码调用
4.finalize()方法只需要重写,重写完后会有程序来调用
5.finalize()方法的执行时机:
当一个java对象即将被垃圾回收器回收的时候,垃圾回收器负责调用finalize()方法
6.finalize()方法实际上是SUN公司为java程序员准备的一个时机,垃圾销毁时机。如果希望在对象销毁时执行一段代码的话,这段代码要写到finalize当中
7.java中的垃圾回收器不是轻易启动的,垃圾太少,或者时间没到,种种条件下,有可能启动,有可能不启动
hashCode
1.源代码
public native int hashCode();
2.这个方法不是抽象方法,带有native关键字,底层调用c++程序
3.hashCode()方法返回的是哈希码:
实际上就是一个java对象的内存地址,经过哈希算法,得出一个值。
所以hashCode()方法的执行结果可以等同看作一个java对象的内存地址