深入了解equals怎么比较String类型的对象

关键字:String、equals、char数组

关于equals我们知道是用来比较内容,今天研究一下具体怎么实现。

package test;

public class Demo01 {
    public static void main(String[] args) {
        String a = "1";
        System.out.println(a.equals(1));
    }

}

上面这行代码一个是String类型一个是int类型所以输出结果是false。

public boolean equals(Object anObject) {
//判断两个值地址是否相同,如果一样直接返回true。
    if (this == anObject) {
        return true;
    }
//判断是否为String对象,刚刚的代码在这就直接输出false。
    if (anObject instanceof String) {
//此处value是String类中定义的将当前调用此方法的String转换成的char数组,方便进行下面的比较。 
        String anotherString = (String)anObject;
        int n = count;
//判断调用String的char数组和比较String的char数组长度是否一致。
        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进行比较,首先比较地址,再转换为char数组,进行数组长度对比,最后比较数组下标来实现对比功能。

posted @ 2019-12-24 21:30  土豆烤鸭  阅读(474)  评论(0编辑  收藏  举报