java equals总结

一、 ==运算符和equals的区别

== 可以使用在基本数据类型变量 和引用数据类型变量

如果比较的是基本数据类型变量;比较两个变量保存的数据是否相等。(不一定类型相等),对于引用类型就是比较内存地址

equals 它是属于java.lang.object类里面的方法,如果该方法没有被重写过默认也是==

String类的equals方法是被重写过的,所以 String equals时会为true

Object类中 equals()的定义

public boolean equals(Object obj) {
        return (this == obj);
    }

object类中定义的equals和==的作用是相同的,比较两个对象的地址值是否相同;

String、Date File包装类都重写了equals方法,比较的不是两个引用的地址是否相同,而是比较两个对象的 实体内容是否相同。

public class Order {
    
    private int orderId;
    
    private String 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;
    }
    

    public Order(int orderId, String orderName) {
        super();
        this.orderId = orderId;
        this.orderName = orderName;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + orderId;
        result = prime * result + ((orderName == null) ? 0 : orderName.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Order other = (Order) obj;
        if (orderId != other.orderId)
            return false;
        if (orderName == null) {
            if (other.orderName != null)
                return false;
        } else if (!orderName.equals(other.orderName))
            return false;
        return true;
    }
    
}

public class EqualsTest {
    
    public static void main(String[] args) {
        
        int i=1;
        double k=1;
        System.out.println( i==k);
        Order or1=new Order(1,"aa");
        Order or2=new Order(1,"aa");
        //若用两个对象==则是为false的
        System.out.println(or1==or2);
        
        System.out.println(or1.equals(or2));
    }
}

结果:true
false
true

猜你喜欢

转载自www.cnblogs.com/hellohero55/p/12663331.html