美文网首页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