Java equals 和 “==”

Java 中 ,“==” 和“equals” 经常被误认为是相同的,如下我们来说明下二者的不同点。

 

1.“==”

是一种运算符。

如果比较的两个元素是基本数据类型,则按照数据内容来比较。

如果比较的两个元素是类的实体,则比较的是两者的地址值。

 

2. equals()

是一个方法,即只能由类的实例对象来发起使用。

在object类中的代码中可以看出,实际也是“==”运算的实现。

但是String ,Date 和File这三个类重写了equals方法,所以这三个类的实例调用euqals方法时,按照重写代码的内容,实际也是在比较内容值。

其他类如果没有重写equals方法,则比较的还是地址值。

注意,在使用equals方法时,一定要确保前面的对象不是一个null值。null.equals(o)是永远无法返回true的。

 

3.自定义类如果需要比较类的具体内容,也可以重写equals方法。

    @Override
    public boolean equals(Object o) {
        if(this == o){
            return true;
        }
        if(o instanceof Order){
            Order x = (Order) o;
            return x.orderId == ((Order) o).orderId && x.orderName.equals(((Order) o).orderName);
        }
        return false;
    }

 

posted @ 2021-10-20 18:56  donkey8  阅读(34)  评论(0)    收藏  举报