美文网首页java
java重写toString和equals方法

java重写toString和equals方法

作者: android_Pie | 来源:发表于2020-03-22 17:06 被阅读0次

java重写toString和equals方法

java.lang.Object

  • java 所有类的顶层父类

  • 一个类不继承其他类,默认继承 Object

    class A /*extends Object*/ {
        
    }
    

方法 toString()

  获得一个对象的字符串表示,
  Object 中的实现是:"类型@内存地址"
  
  如果需要,可以在子类中重写 toString()


.equals(Object obj)
  比较当前对象与参数对象 obj 是否相等
  Object 中的实现是:
      比较内存地址
      this == obj
  如果需要,可以在子类中重写 equals()方法.
public class Point /*extends Object*/ {
    private int x;
    private int y;
    
    public Point() {
        super();
    }
    public Point(int x, int y) {
        super();
        this.x = x;
        this.y = y;
    }
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }
    
    
    @Override
    public String toString() {
        return "("+x+", "+y+")";
    }
    @Override
    public boolean equals(Object obj) {//向上转型
        // 考虑参数的三种特殊情况
        if(obj == null) return false;
        if(obj == this) return true;
        if(!(obj instanceof Point)) return false; 
        
        //当前对象的 x, y,与
        //参数对象 obj的 x, y 比较
        Point p = (Point) obj;//向下转型
        return x == p.x && y == p.y;
    }
}

public class Test {
    public static void main(String[] args) {
        Point a = new Point(5,6);
        Point b = new Point(5,6);
        
        System.out.println(a.toString());
        System.out.println(b.toString());
        
        System.out.println(a == b);//由于创建的是两个对象,内存地址不一样,返回false
        System.out.println(a.equals(b));//由于子类重写了equals方法,返回的是对象的变量是否相等
    }
}
QQ群号172660439.png

相关文章

网友评论

    本文标题:java重写toString和equals方法

    本文链接:https://www.haomeiwen.com/subject/wzsvyhtx.html