当前位置 博文首页 > YHSevenWater的博客:Java中Object类中equals()方法的使用

    YHSevenWater的博客:Java中Object类中equals()方法的使用

    作者:[db:作者] 时间:2021-08-11 16:03

    ==?和equals()区别

    一、==的使用

    ==:运算符:可以用在基本数据类型变量和引用数据类型变量中。
    ①如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)
    ②如果比较的是引用数据类型变量:比较两个对象的地址值是否相同。(即两个引用是否指向同一实体)

    二、equals()方法的使用

    ①是一个方法,而非运算符;
    ②只能适用于引用数据类型;
    ③Object类(Java中的根父类)中equals()的定义:
    public boolean equals (Object object){
    ??????return (this == obj);
    }
    说明:Object类中定义的equals()和==的作用是相同的。
    ④像String、Date、File、包装类等都重写了Object类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的“实体内容”(即属性)是否相同。
    ⑤通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的“实体内容”是否相同。那么,我们就需要对Object类中的equals()进行重写。
    ★重写的原则:比较两个对象的实体内容是否相同。

    程序展示:

    package com.java.oop3;
    import java.util.Objects;
    
    /**
     * @ClassName Order
     * @Description:
     * 编写Order类,有int型的orderId, String型的orderName,相应的getter()和setter()方法,两个参数的构造器,重写父类的equals()方法:
     * public boolean equals(Object obj), 并判断测试类中创建的两个对象是否相等。
     * @Author Seven
     * @Date 2021/8/2 15:39
     * @Version 1.0
     **/
    public class Order {
        private int orderId;
        private String orderName;
    
        public Order(){	//空参构造器
            super();
        }
    
        public Order(int orderId, String orderName) {	//两个参数的构造器
            this.orderId = orderId;
            this.orderName = orderName;
        }
    
        public int getOrderId() {
            return orderId;
        }
    
        public void setOrderId(int orderId) {
            this.orderId = orderId;
        }
    
        public String getOrderName() {
            return orderName;
        }
    
        public void setOrderName(String orderName) {
            this.orderName = orderName;
        }
    
        //equals方法的手动重写
        public boolean equals(Object object) {
            if(this == object){
                return true;
            }
            if(object instanceof Order){    //判断object是否是类Order的实例。是,返回true,否,返回false。
                Order order = (Order) object;    //向下转型
                return this.orderId == order.orderId && this.orderName.equals(order.orderName);
            }
            return false;
        }
    
    //    @Override   //equals方法的自动生成,在实际项目开发中,都是直接使用自动生成的方法。练习当中还是要会手动使用equals,虽然很粗糙。
    //    public boolean equals(Object o) {
    //        if (this == o) return true;
    //        if (o == null || getClass() != o.getClass()) return false;
    //        Order order = (Order) o;
    //        return orderId == order.orderId && Objects.equals(orderName, order.orderName);
    //    }
    
    }
    
    package com.java.oop3;
    
    import com.sun.org.apache.xpath.internal.operations.Or;
    
    /**
     * @ClassName OrderTest
     * @Description:
     * @Author Seven
     * @Date 2021/8/2 15:42
     * @Version 1.0
     **/
    public class OrderTest {
        public static void main(String[] args) {
            Order o1 = new Order(1,"hello");
            Order o2 = new Order(1,"hello");
            Order o3 = new Order(2,"yes");
            System.out.println(o1.equals(o2));
            System.out.println(o1.equals(o3));
        }
    }
    

    在这里插入图片描述

    cs
    下一篇:没有了