java源码之equals

1 篇文章 0 订阅
1 篇文章 0 订阅

java源码之equals

java.lang.Object:equals初始比较方法(所有equals的祖先)

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

没什么可说的Object就是比较两个对象是否相等,在返回值

java.lang.String的equals()方法

Object是所有类的祖先类,同样也是string类的祖先类所以String重写了equals方法

public boolean equals(Object anObject) {
    //首先判断传入的是否是同一个对象如果是直接返回true
    if (this == anObject) {
        return true;
    }
    //判断传入的对象是否为string类型不是直接返回false
    if (anObject instanceof String) {
        //将传入的object类型转换为String类型
        String anotherString = (String)anObject;
        //获取原字符串对象的长度
        int n = value.length;
        //判断原字符串是否于传入需要对比的字符串的长度是否相等相等进入下一层判断,否则返回false
        if (n == anotherString.value.length) {
            //获取原先字符串的char数组
            char v1[] = value;
            //获取传入要比较的字符串的char数组
            char v2[] = anotherString.value;
            //用于记录下标
            int i = 0;
            //循环对比char数组的每个值如果有一个不相等就直接返回false,如果循环完毕所有值都相等返回false
            while (n-- != 0) {
                //挨个比较数组中的每个值
                //这里为什么!=因为char为基本数据类型可以直接用!=/==相比较
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

简单总结

1.进行比较所传入的对象是否是同一个对象,是返回true,不是继续进行判断

2.判断比较的对象是否为String是进入下一层判断,不是返回false(因为这是字符串的判断,如果连字符串都不是就没有比较的意义)

3.将原字符串与要比较的字符串的长度进行比较,如果相等则进入下一层判断不相等返回false

4.以上判断都通过了就进行最终判断将要比较的字符串转为char数组,再循环中用!=挨个比较数组中的每个值,如果循环结束还是都相等,就证明这两个字符串相等,返回true

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值