首页 > 其他分享 >《String类的equals()的作用和源代码解读》

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

时间:2025-01-21 11:02:53浏览次数:3  
标签:return String Object equals 源代码 比较 类中

一、equals()方法的由来

equals()最开始是定义在Java.lang包下的Object中的一个经行比较的方法,根据Object类的核心代码可以看出来,在Object类中equals()方法比较时使用“==”运算符来比较两者地址,但实际应用情况下,人们往往想比较两者的值是否相同,当两个相同的值存进不同内存地址时,这个比较方法就不在准确了,故而在String类中就对equals()方法进行了重写!

二、String类中的equals()方法

String类中对Object父类中的equals()方法进行了重写,改变了Object类中equals()方法的缺点,可以对字符串内容进行比较,关于重写的代码以及注释如下:

 //String类中的equals()方法的重写
    public boolean equals(Object anObject) {
        //先对两个元素的地址比较
        //若地址相同则内容必定相同,返回true
        //若地址不同则进行内容比较
        if (this == anObject) {
            return true;
        }
        //对内容进行比较
        if (anObject instanceof String) {
            //anotherString来接收要比较的值
            String anotherString = (String)anObject;
            int n = value.length;
            //对两者长度进行比较,若长度不同则二者内容不同,返回false
            //若长度相同则经行下一步比较
            if (n == anotherString.value.length) {
                //将字符串转为char[]数组,进行逐位比较
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                //while循环进行逐位比较,若有一位不同,则返回false
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                //每个字符都相同则返回true
                return true;
            }
        }
        return false;
    }

标签:return,String,Object,equals,源代码,比较,类中
From: https://blog.csdn.net/cyf123__/article/details/145268026

相关文章

  • String类的equals()的作用和源代码解读
    1. 了解equals()方法equals方法是用于比较两个对象是否相等的方法,定义在Object类中。其默认实现仅比较对象的引用地址,但可以通过重写方法实现对对象内容的比较。只有引用数据类型才可以使用equals方法,我们点进equals方法的源码:我们看代码前几行,观察到当传入进来的参数之间......
  • 如何在网站中安全有效地修改源代码,确保不影响网站的正常运行?
    修改网站源代码是一项需要谨慎操作的任务,以确保不会影响网站的稳定性和功能。以下是详细的步骤和建议:确定修改需求:明确具体的修改需求,包括功能改进、界面优化等方面的要求。制定详细的修改计划,确保每个改动都有明确的目标。备份现有文件:在进行任何更改之前,请确保对当......
  • [LeetCode] 1370. Increasing Decreasing String 上升下降字符串
    Youaregivenastring s.Reorderthestringusingthefollowingalgorithm:Removethe smallest characterfrom s and append ittotheresult.Removethe smallest characterfrom s thatisgreaterthanthelastappendedcharacter,and append itt......
  • 详解Rust 中 String 和 str 的用途与区别
    文章目录1.基本定义1.1String1.2str2.存储位置与内存模型2.1String2.2str3.用法与区别4.使用场景4.1使用String的场景4.2使用str的场景5.String和str的关系6.代码示例分析6.1从&str创建String6.2从String获取&str6.3拼接字符串6.4静态......
  • String类及其衍生类的简单理解
    String类及其衍生类的简单理解StringString指的是字符串的类,在java中,它是不可以更改的。1.下面简单介绍两种构造方法。publicclasshaohaoxuexi{publicstaticvoidmain(String[]args){Stringa=newString();Stringb="abc";}}这是两......
  • 单片机毕业设计之stm32单片机物联网远程心率血氧MAX30102健康监控系统,老人健康监测+行
    一、设计简介        本项目旨在利用STM32F103C8T6微控制器为核心,构建一个实时人体健康监测系统。该系统集成了多种传感器和模块,能够全面、准确地监测并显示人体的关键健康数据,同时提供异常报警功能,还通过蓝牙通信功能实现了数据的远程传输和记录,方便用户随时了解自己......
  • Java中String类常用的各种方法
    Java中String类常见的方法以下介绍字符串常见的几个方法。介绍String类在Java中,String类是一个代表字符串的类,具有以下特性:不可变性:String对象一旦被创建就是不可变的,即它们的值在创建后不能被更改。任何对String对象的修改操作实际上会创建一个新的String对象。......
  • JSON.stringify有什么局限性和哪些技巧?
    JSON.stringify是JavaScript中用于将对象转换为JSON字符串的方法,但它在某些情况下具有局限性,同时也有一些技巧可以帮助开发者更有效地使用它。以下是关于JSON.stringify的局限性和技巧的详细解答:局限性:循环引用问题:当对象之间存在循环引用时,JSON.stringify会抛出错误。例如,一......
  • 在C++中std::string 和string有啥区别呀?
    在C++中,std::string和string实际上是同一个类型,只是它们的命名空间(namespace)不同。具体来说:(我说为啥在写代码的时候都有个usingnamespacestd;语句我还以为是闹着玩.)std::string明确指定了string类型位于std命名空间中。string是std::string的简写,但要使......
  • 【YashanDB知识库】导入数据时报错:YAS-00008 type convert error:literal does not mat
    本文内容来自YashanDB官网,原文内容请见https://www.yashandb.com/newsinfo/7901522.html?templateId=1718516现象将数据通过SQL语气导入崖山时报错:YAS-00008typeconverterror:literaldoesnotmatchformatstring原因插入日期类型的字符串,不是配置参数DATE_FORMAT所指......