旗下导航:搜·么
当前位置:网站首页 > JAVA教程 > 正文

java怎样推断两个对象是不是相称【JAVA教程】,java

作者:搜教程发布时间:2019-11-27分类:JAVA教程浏览:39评论:0


导读:java中能够运用equals()要领推断两个对象是不是相称,equals()要领用于将字符串与指定的对象比较。假如给定对象与字符串相称,则返回true;不然返回fa...

java中能够运用equals()要领推断两个对象是不是相称,equals() 要领用于将字符串与指定的对象比较。假如给定对象与字符串相称,则返回 true;不然返回 false。

该要领的源码以下:

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

一切的对象都具有标识(内存地址)和状况(数据),同时“==”比较两个对象的的内存地址,所以说运用Object的equals()要领是比较两个对象的内存地址是不是相称,即若object1.equals(object2)为true,则示意equals1和equals2实际上是援用同一个对象。

虽然有时刻Object的equals()要领能够满足我们一些基础的请求,然则我们必须要清楚我们很大部份时刻都是举行两个对象的比较,这个时刻Object的equals()要领就不能够了,实际上JDK中,String、Math等封装类都对equals()要领举行了重写。

下面是String的equals()要领:

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = count;
        if (n == anotherString.count) {
        char v1[] = value;
        char v2[] = anotherString.value;
        int i = offset;
        int j = anotherString.offset;
        while (n-- != 0) {
            if (v1[i++] != v2[j++])
            return false;
        }
        return true;
        }
    }
    return false;
    }

关于这个代码段:if (v1[i++] != v2[j++])return false;我们能够异常清楚的看到String的equals()要领是举行内容比较,而不是援用比较。至于其他的封装类都差不多。

在Java范例中,它对equals()要领的运用必须要遵照以下几个划定规矩:

equals 要领在非空对象援用上完成相称关联:

1、自反性:关于任何非空援用值 x,x.equals(x) 都应返回 true。

2、对称性:关于任何非空援用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。

3、传递性:关于任何非空援用值 x、y 和 z,假如 x.equals(y) 返回 true,而且 y.equals(z) 返回 true,那末 x.equals(z) 应返回 true。

4、一致性:关于任何非空援用值 x 和 y,屡次挪用 x.equals(y) 一直返回 true 或一直返回 false,条件是对象上 equals 比较中所用的信息没有被修正。

5、 关于任何非空援用值 x,x.equals(null) 都应返回 false。

关于上面几个划定规矩,我们在运用的过程当中最好恪守,不然会涌现意想不到的毛病。

在java中举行比较,我们须要依据比较的范例来挑选适宜的比较体式格局:

1) 对象域,运用equals要领 。

2) 范例平安的罗列,运用equals或== 。

3) 可能为null的对象域 : 运用 == 和 equals 。

4) 数组域 : 运用 Arrays.equals 。

5) 除float和double外的原始数据范例 : 运用 == 。

6) float范例: 运用Float.foatToIntBits转换成int范例,然后运用==。

7) double范例: 运用Double.doubleToLongBit转换成long范例,然后运用==。

更多java学问请关注java基础教程。

以上就是java怎样推断两个对象是不是相称的细致内容,更多请关注ki4网别的相干文章!

标签:java


欢迎 发表评论: