关于Object里面需要重写的方法以及细节
P527-P539
关键词:toString equals finalize Object
关于Object类的toString()方法的源码
1.源码长什么样子
public String toString(){
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
}
源码上toString方法的默认实现是:
类名@对象的内存地址转换成十六进制的形式
2 .SUN公司的这样设计的目的是什么
通过调用这个方法可以将一个 java对象转换成字符串形式
3.SUN公司开发java语言时,建议所有子类都去重写toString()方法
toString()方法应该是一个简洁的,详实的,易阅读的。
输出引用的时候,会自动调用toString()方法
关于Object类中的equals方法
1.equals方法的源代码
public boolean equals(Object obj) {
return (this == obj);
}
以上这个方法是Object类的默认实现。
2.SUN公司设计equals方法的目的是什么?
以后编程过程中,都要通过equals方法来判断两个对象是否相等,equals方法是判断两个对象是否相等的。
3.我们需要研究一下Object类给的这个默认的equals方法够不够用
在Object类中,无法判断两个两个对象是否相等,因此我们要自行重写equals方法,让他能判断对象的内容是否相等。
4.判断两个对象是否相等,不能用==
因为==比较的是两个对象的内存地址
5.java.lang下的String方法也是重写了equals和toString方法的。
会比较对象的内容,以及输出引用的使用,也是输出他的本身内容
大结论:
java中的什么数据类型可以使用“==”来判断
java中的基本类型比较是否相等,使用==
java中的什么类型数据需要使用equals判断
java中所有的引用数据类型统一使用equals方法来判断是否相等
这是规矩!
重写equals方法一定要彻底下面插个自己写的例子:
*/
public class Test {
public static void main(String[] args) {
User u1 = new User("zhangsan",new Address("深圳市","龙岗区","90001"));
User u2