4.19 比较==操作符与equals方法

在这里插入图片描述
在这里插入图片描述

package day08;

public class Test1 {
    public static void main(String[] args) {
        int i=3;
        System.out.println(i==4);

        //引用类型比较引用,只有指向同一对象时,才会返回ture
        Person1 p1=new Person1();
        Person1 p2=new Person1();
        System.out.println(p1==p2);

        Person1 p3=new Person1();
        Person1 p4=p3;
        System.out.println(p3==p4);

//        Test1 t1=new Test1();
//        System.out.println(p1==t1);//会出错,不是同一类型的
        System.out.println("--------------");
        System.out.println(p1.equals(p2));//只能比较引用类型,其作用和= =相同

        String s1=new String("abc");
        String s2=new String("abc");
        System.out.println(s1==s2);
        System.out.println(s1.equals(s2));
        
        System.out.println("--------------");
        String s3="abc";
        String s4="abc";
        System.out.println(s3==s4);
    }
}

运行截图
在这里插入图片描述

在这里插入图片描述
小结:
==是比较的是内存地址
equals,对于特殊的,例如String来说,比较的是值,对于其他的来说,比较的也是内存地址

练习:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Order

package day08;

public class Order {
    public Order(int OrderId,String OrderName){
        this.OrderId=OrderId;
        this.OderName=OrderName;
    }
    int OrderId;
    String OderName;

    public int getOrderId() {
        return OrderId;
    }

    public void setOrderId(int orderId) {
        OrderId = orderId;
    }

    public String getOderName() {
        return OderName;
    }

    public void setOderName(String oderName) {
        OderName = oderName;
    }
    public boolean equals(Object obj){
        boolean flag=false;
        if (obj instanceof Order){
            Order o = (Order) obj;
            if (this.OrderId==o.OrderId && this.OderName.equals(o.OderName)){
                flag=true;
            }
        }
        return flag;
    }
}

TestOrder

package day08;

public class TestOrder {
    public static void main(String[] args) {
        Order o1=new Order(123,"a001");
        Order o2=new Order(123,"a001");

        System.out.println(o1.equals(o2));
    }
}

运行截图
在这里插入图片描述
MyDate

package day08;

public class MyDate {
    public MyDate(int year,int month,int day){
        this.year=year;
        this.month=month;
        this.day=day;
    }
    int year;
    int month;
    int day;

    @Override
    public boolean equals(Object obj) {
        int flag=1;
        if (obj instanceof MyDate){
            MyDate my= (MyDate) obj;
            flag=0;
            if (this.year!=my.year){
                flag+=1;
            }
            if (this.month!=my.month){
                flag+=1;
            }
            if (this.day!=day){
                flag+=1;
            }
        }
        if (flag==0){
            return true;
        }else {
            return false;
        }
    }
}

TestMyDate

package day08;

public class TestMyDate {
    public static void main(String[] args) {
        MyDate m1=new MyDate(2016,12,15);
        MyDate m2=new MyDate(2016,12,15);
        System.out.println(m1.equals(m2));
    }
}

运行截图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值