Object类中的equals和toString方法

Object类是所有引用类型的祖宗

它的equals和toString方法用于被子类重写后使用,变成有业务意义的判断两个对象相同和将对象信息转换成字符串的方法。

java源码中的.equals:

public boolean equals(Object obj) {
        return (this == obj);
}

它的功能是比较两个引用类型变量的中的地址值是否相同,一般没有实际的的业务意义,而且“==”已经具备了这个功能

java源码中的toString:

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

我们使用System.err.println(obj)时,就是在调用obj所指的对象的toString方法

java源码中的println:

public void println(Object x) {
        String s = String.valueOf(x);
        if (getClass() == PrintStream.class) {
            // need to apply String.valueOf again since first invocation
            // might return null
            writeln(String.valueOf(s));
        } else {
            synchronized (this) {
                print(s);
                newLine();
            }
        }
    }

java源码中的valueOf

public static String valueOf(Object obj) {
        return (obj == null) ? "null" : obj.toString();
}

可以看到toString方法被调用了。

 

结合一个有业务意义的具体类:

 

长方形类,包含长和宽两个属性:

public class Rect{
    private double width;
    private double height;
}

这里规定长宽相等,或者宽长对应相等,的两个长方形就是相等的:

 

重写equals方法:

 

 重写toString方法:

public String toString() {
  return "宽为"+width+"高为"+height+"的长方形";
}

在测试类中查看结果:

 

posted @ 2021-01-25 16:28  lucascube  阅读(125)  评论(0)    收藏  举报