加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Java equals函数分析

发布时间:2021-11-22 11:18:44 所属栏目:PHP教程 来源:互联网
导读:equals函数在基类object中已经定义,源码如下 public boolean equals(Object obj) { return (this == obj); } 从源码中可以看出默认的equals()方法与==是一致的,都是比较的对象的引用,而非对象值(这里与我们常识中equals()用于对象的比较是相饽的,原

equals函数在基类object中已经定义,源码如下
 
public boolean equals(Object obj) {
       return (this == obj);
   }
从源码中可以看出默认的equals()方法与“==”是一致的,都是比较的对象的引用,而非对象值(这里与我们常识中equals()用于对象的比较是相饽的,原因是Java中的大多数类都重写了equals()方法,下面已String类举例,String类equals()方法源码如下:)
 
/** The value is used for character storage. */
private final char value[];
 
/** The offset is the first index of the storage that is used. */
private final int offset;
 
/** The count is the number of characters in the String. */
private final int count;
 
 
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;
    }
String类的equals()非常简单,只是将String类转换为字符数组,逐位比较。
 
综上,使用equals()方法我们应当注意:
 
1. 如果应用equals()方法的是自定义对象,你一定要在自定义类中重写系统的equals()方法。
 
2. 小知识,大麻烦。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读