首页 > 其他 > 详细

Object类的两个方法

时间:2020-10-14 22:55:16      阅读:34      评论:0      收藏:0      [点我收藏+]

1.toString方法

ps:Object类是所有类的公共父类,定义一个人类即默认继承Object类

当调用toString方法时,默认会返回一个字符串(该对象的地址值),但在应用中无意义
所以需要在子类中需覆盖重写该方法,通常让其返回对象的属性

public class ObjTostring {
    public static void  main(String[] args){
        student obj = new student();
        System.out.println(obj.toString());
        //student{num=30, name=‘张三‘}
    }

}
class student /*extends Object*/{
    int num=30;
    String name = "张三";

    @Override//对toString方法进行覆盖重写,返回对象的属性
    public String toString() {
        return "student{" +
                "num=" + this.num +
                ", name=‘" + this.name + ‘\‘‘ +
                ‘}‘;
    }
}

2.equals方法

/*
equals方法的原型
public boolean equals(Object obj){
return (this=obj);
}
对于引用类型来说,调用equals默认比较的是两个对象的地址值;但通常两个对象的地址值是不相等的
所以默认比较的情况下意义不大,通常重写该方法让其比较对象的属性

*/

import java.util.Objects;
public class objEquals {

    public static void main(String[] args){
        //默认情况
        Fame fame1 = new Fame();
        Fame fame2 = new Fame();
        System.out.println(fame1);//CommonAPItwo.Fame@4554617c
        System.out.println(fame2);//CommonAPItwo.Fame@74a14482
        System.out.println(fame1.equals(fame2));//false
        //重写后
        Fame fame3 = new Fame(20,"谷穗");
        Fame fame4 = new Fame(20,"谷穗");
        Fame fame5= new Fame(30,"谷穗");
        System.out.println(fame3.equals(fame4));//true
        System.out.println(fame4.equals(fame5));//false

    }

}
class Fame {
    int year=00 ;
    String crop  =" ";
    /*

    @Override
    public boolean equals(Object obj){
       if(obj==this){//当obj就是调用方法的对象时直接返回true,提高效率
           return true;
       }
        if (obj==null){//当obj为null时直接返回false,提高效率
           return false;
        }
        if(obj instanceof Fame) {//提高代码安全性(可能传进来的对象不能向下转型)
            Fame f = (Fame) obj;
            boolean b = (this.year == ((Fame) obj).year && this.crop.equals(f.crop));
            return b;
        }
        else return false;
    }
*/

    @Override//IDE自动生成的重写后的equlas方法
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        //与o == null或不是安全的向下转型效果一样
        Fame fame = (Fame) o;
        return year == fame.year &&Objects.equals(crop, fame.crop);
        //Objects是一个工具类提供了一些空指针安全的方法操作对象(空指针是不能调用方法的)
        //Objects的equals方法比较两个对象,但是空指针安全
    }

    public Fame(){

    }
    public Fame(int year,String crop){
        this.crop=crop;
        this.year=year;
    }
}

 

Object类的两个方法

原文:https://www.cnblogs.com/susexuexi011/p/13817400.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!