String类的equals()的作用和源代码解读

equals()的作用尤为重要,因为String对象经常用于比较文本内容。很多人容易将equals()==混淆。理解equals()方法对于避免常见的BUG和优化代码至关重要。

文章目录

目录

文章目录

前言

一、equals()方法的由来

二、String类的equals()方法的源代码解读

三、实际应用场景

总结


前言

  • 简介:为什么equals()方法在Java中如此重要,尤其是对于String类。
  • 常见误区:equals()==的区别,常见的理解偏差。

一、equals()方法的由来

equals()方法源于Object类,是所有Java类的父类方法。Java中的String类对equals()进行了重写,用于比较字符串的内容而非内存地址。在String类中,字符串是不可变的,为了正确比较字符串内容,必须重写equals()方法。

二、String类的equals()方法的源代码解读

public boolean equals(Object anObject) {
    // 1. 快速判断:如果两者地址相同,直接返回true
    if (this == anObject) {
        return true;
    }
    
    // 2. 类型检查:如果不是String类型,返回false
    if (anObject instanceof String) {
        String anotherString = (String) anObject;
        
        // 3. 字符串长度比较:长度不等则直接返回false
        if (value.length != anotherString.value.length) {
            return false;
        }
        
        // 4. 字符逐一比较,如果发现不同的字符,则返回false
        for (int i = 0; i < value.length; i++) {
            if (value[i] != anotherString.value[i]) {
                return false;
            }
        }
        
        // 5. 如果以上都没有问题,返回true
        return true;
    }
    
    // 6. 如果类型不匹配,返回false
    return false;
}

三、实际应用场景

在集合类(如HashSetHashMap)中,equals()方法被用于对象查找、比较和存储。当存储String对象时,使用equals()方法来判断对象是否相同,而不是使用==(比较内存地址)。


总结

  • ==用于比较对象的引用是否相同,即是否指向同一内存地址。
  • equals()用于比较对象的内容是否相同,需要类中重写equals()方法来定义比较逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值