0
点赞
收藏
分享

微信扫一扫

【java】toString和equals

芒果六斤半 2022-04-27 阅读 247
java
public class Test {
    public static void main(String[] args){
        Time time = new Time(2022,4,27);
        System.out.println(time.toString());  //这里可以直接写System.out.println(time);

        Time t1 = new Time(2022,1,1);
        Time t2 = new Time(2022,1,1);
        System.out.println(t1.equals(t2)); //输出true

        Time t3 = new Time(2022,1,3);
        System.out.println(t2.equals(t3));  //输出false
    }
}

class Time{
    int year;
    int month;
    int day;
    public Time(){}
    public Time(int year,int month,int day){
        this.year = year;
        this.month = month;
        this .day = day;
    }
    public String toString(){
        return year +"年"+month +"月"+ day +"日";
    }
/**    public boolean equals(Object obj){   //这样子重写效率低,看改良版
        //获取第一个日期的数据    t1.equals(t2)这里的t1是第一个数据,t2是第二个数据
        //                     t2第二个数据需要向下转型判断,t1t2对象名不是固定的
        //                      equals(obj)括号中的值为obj
        int year1 = this.year;
        int month1 = this.month;
        int day1 = this.day;

        //获取第二个日期的数据
        if(obj instanceof Time){
            Time t = (Time)obj;
            int year2 = t.year;
            int monthh2 = t.month;
            int day2 = t.day;
            if(year1 == year2 && month1 == monthh2 && day1 == day2){
                return true;
            }
        }
        return false;
    }
 */
//改良版
public boolean equals(Object obj){
    if(obj == null || !(obj instanceof Time)){//如果obj为空 或者 obj不是Time,直接返回false
        return false;
    }
    if(this == obj){
        return true;
    }
    Time t = (Time)obj;  //这里直接转型,因为前面已经判断过obj了
    return this.year == t.year && this.month == t.month && this.day == t.day; //&&为短路与,全相等输出true,反之输出false
    }
}

 

举报

相关推荐

0 条评论