Java 基础知识复习总结-equals与==

Java 基础知识复习总结

equals是什么?

equals方法是基类Object中的方法,因此对于所有的继承与Object的类都会有该方法,equals()用于判断对象的内存地址引用是否是用一个地址,相等返回true,否则返回false。

重写equals方法一般用来比较对象的内容是否相等

例子

重写equals

public class Student {
    private int id;

    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Student(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }

        if (this.getClass() != obj.getClass()) {
            return false;
        }
        Student student = (Student) obj;

        if (name == null) {
            return false;
        }

        if (id == student.getId() && name.equals(student.getName())) {
            return true;
        }

        return false;

    }

    public static void main(String[] args) {
        Student stu1 = new Student(1,"学生1");
        Student stu2 = new Student(1,"学生1");
        System.out.println(stu1.equals(stu2)); //返回true 重写了equals方法是对比里面的具体内容
    }
}

没有重写equals

public class Student1 {
    private int id;

    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Student1(int id, String name) {
        this.id = id;
        this.name = name;
    }


    public static void main(String[] args) {
        Student1 stu1 = new Student1(1,"学生1");
        Student1 stu2 = new Student1(1,"学生1");
        System.out.println(stu1.equals(stu2)); //没有重写就是false,因为调用的是Object父类的equals,这比较的是 == ,是地址值
    }
}
==和equals()的区别
  1. ==比较运算符

==等于比较运算符,如果进行比较的两个操作数都是数值类型,即使他们的数据类型不相同,只要他们的值相等,也都将返回true.如果两个操作数都是引用类型,那么只有当两个引用变量的类型具有父子关系时才可以比较,而且这两个引用必须指向同一个对象,才会返回true.(在这里我们可以理解成比较的是两个变量的内存地址)

  1. 区别

1、= =:是运算符。 可以比较基本类型,也可以比较引用类型。对于基本类型就是比较值,而引用类型就是比较内存地址。并且必须保证符号左右两边的变量类型一致,即都是比较基本类型,或者都是比较引用类型。
2、equals():是java.lang.Object类里面的方法。只能适用于引用数据类型。如果类的该方法没有被重写过默认也是==

总结

  • "=="主要比较两个引用的对象是否相等,而equals()方法比较的是两个对象的实际内容
  • ==比较的是值。
  • equals比较的是引用数据类型
  • 如果没有重写hashCode和equals方法,比较的是地址值,因为Object的equals方法中使用是==

######个人总结
第一次学习写博客,有很多不足的地方需要改进,梳理知识点表达也不是很清晰,排版,格式点也是非常的不熟练,但是最终还是迈出了第一步-,希望自己继续努力加油,坚持下去。加油!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值