Java中“==”和equals的区别

Java中“==”和equals的区别

  • “==”可以适用于基本数据类型和应用数据类型,equals()只能适用于引用数据类型
  • 对于引用数据类型
    • “==”比较两个引用类型的地址值是否相同
      
    • equals()不重写的话,比较的也是两个引用类型的地址值是否相同;equals()重写的话,比较的也是两个引用类型的内容是否相同
      
public class test{
    public static void main(String[] args) {
        MyData mydata1 = new MyData(12, 5, 1984);
        MyData mydata2 = new MyData(12, 5, 1984);

        // == 和 equals() 的测试
        if (mydata1 == mydata2) {
            System.out.println("mydata1 == mydata2");
        }else {
            System.out.println("madata1 != mydata2");
        }

        if (mydata1.equals(mydata2)) {
            System.out.println("mydata1 equals mydata2");
        } else {
            System.out.println("mydata1 no equals mydata2");
        }
    }
}
class MyData{
    private int day;
    private int month;
    private int year;

    public MyData(int day, int month, int year) {
        this.day = day;
        this.month = month;
        this.year = year;
    }
    //重写equals()方法
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj instanceof MyData) {
            MyData mydata = (MyData) obj;
            return this.day == mydata.day && this.month==mydata.month && this.year == mydata.year;
        }
        return false;
    }

    }
}

上述代码执行结果:

madata1 != mydata2
mydata1 equals mydata2

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值