返回顶部
首页 > 资讯 > 精选 >如何进行equals()方法和==异同的比较
  • 610
分享到

如何进行equals()方法和==异同的比较

2023-06-02 18:06:53 610人浏览 八月长安
摘要

如何进行equals()方法和==异同的比较,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。equals()方法是Object类的方法,所有的类都集成了此方法,还

如何进行equals()方法和==异同的比较,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

equals()方法是Object类的方法,所有的类都集成了此方法,还有部分类重写了这个方法,我们看一下Object类中关于该方法的的源码

  1.     public boolean equals(Object obj) {

  2.         return (this == obj);

  3.     }

可以知道,凡事从Object中继承的equals()方法底层使用的都是==,也就是两者比较的都是地址值。
我们再来说一下String,这个类复写了equals()方法,源码如下:

  1.     public boolean equals(Object anObject) {

  2.         if (this == anObject) {

  3.             return true;

  4.         }

  5.         if (anObject instanceof String) {

  6.             String anotherString = (String)anObject;

  7.             int n = value.length;

  8.             if (n == anotherString.value.length) {

  9.                 char v1[] = value;

  10.                 char v2[] = anotherString.value;

  11.                 int i = 0;

  12.                 while (n-- != 0) {

  13.                     if (v1[i] != v2[i])

  14.                         return false;

  15.                     i++;

  16.                 }

  17.                 return true;

  18.             }

  19.         }

  20.         return false;

  21.     }

该方法中,首先用==比较,如果两者地址值相同,就返回true,如果地址值不相同,再判断字符串内容是否相同,如果相同,返回值也是true,我们可以做一个实验:

  1. class equalsTest{

  2.         public static void main(String[] args){

  3.                 String a = "abc";

  4.                 String b = "abc";

  5.                 String c = new String("abc");

  6.                 sop(a==b);         //true

  7.                 sop(a.equals(b));  //true

  8.                 sop(a==c);         //false

  9.                 sop(a.equals(c));  //true

  10.         }

  11.         

  12.         public static void sop(Object o){

  13.                 System.out.println(o);

  14.         }

  15. }

这个实验中,变量a和b底层默认启动的享元设计模式,指向的都是“abc”这个字符串对象,所以地址值相同,而语句new String("abc")底层创建的是两个对象,所以c的地址值和a,b不同,用==判断的结果为false,但是c指向的字符串内容与a是相同的,所以用equals()判断的结果为ture。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 如何进行equals()方法和==异同的比较

本文链接: https://lsjlt.com/news/230818.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何进行equals()方法和==异同的比较
    如何进行equals()方法和==异同的比较,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。equals()方法是Object类的方法,所有的类都集成了此方法,还...
    99+
    2023-06-02
  • java如何用equals进行比较
    在Java中,可以使用equals()方法来比较两个对象是否相等。equals()方法是Object类的一个方法,可以在所有的Jav...
    99+
    2023-08-22
    java equals
  • 如何进行JSON和XML的比较
    这篇文章给大家介绍如何进行JSON和XML的比较,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。JSON VS XML 的基本方法是前台载入后台声明JavaScript对象的字符串,用e...
    99+
    2024-04-02
  • Golang和C语言的异同比较
    Golang和C语言的异同比较 Golang和C语言是两种非常流行的编程语言,各有其特点和优势。本文将对这两种语言进行比较,并通过具体的代码示例来展示它们之间的异同之处。 一、语言概述...
    99+
    2024-03-07
    c语言 (c) 异同比较 go语言 网络编程
  • 如何进行SAP S4CRM和C4C的技术比较
    如何进行SAP S4CRM和C4C的技术比较,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。部署方式这一差异显而易见,本地部署和云端部署的区别导致了表格里其他比较项目的差异。...
    99+
    2023-06-04
  • Golang函数的函数重载和方法重载的异同比较
    在Golang编程语言中,函数重载和方法重载两个概念都非常重要,它们可以实现对于不同类型参数的重载,以便提高代码的复用性和灵活性。然而,函数重载和方法重载在实现方式和使用场景上也存在着一些异同之处。本文将对这两个概念进行详细的比较。一、概念...
    99+
    2023-05-16
    Golang 方法重载 函数重载
  • python中有哪些进行比较的方法
    python中有哪些进行比较的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、说明比较操作符in和not in检查一个值是否在一个序列中出现。操作符is和is not比较...
    99+
    2023-06-15
  • java进行数据的比较的实例方法
    1、说明 比较基本类型==,比较对象值推荐equals或compareTo。 首先,Java中的数据存储在JVM中,而基本类型的数据存储在JVM的局部变量表中,也可以理解为所谓的“栈...
    99+
    2024-04-02
  • 如何进行DB2 和SQL Server自增列比较
    如何进行DB2 和SQL Server自增列比较,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。最近由于对SQL Server的自增列理解不够好...
    99+
    2024-04-02
  • 如何进行ABAP OPEN SQL中OPEN CURSOR和SELECT的比较
    本篇文章为大家展示了如何进行ABAP OPEN SQL中OPEN CURSOR和SELECT的比较,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 我写了一...
    99+
    2024-04-02
  • 如何进行.NET 的WebSocket开发包比较
    如何进行.NET 的WebSocket开发包比较,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Web项目常常需要将数据尽可能快地推送给客户,必要时无需等待客户端请求。对于与用户...
    99+
    2023-06-17
  • 如何在PHP中进行类型比较
    PHP是一种流行的服务器端脚本语言,常用于开发动态网站和Web应用程序。一种常见的任务是比较不同类型的值。在PHP中,可以使用一系列比较运算符来比较int,float,string和其他类型的值。本文将介绍如何在PHP中进行类型比较。1.比...
    99+
    2023-05-14
    php 比较运算符
  • 如何进行Keras vs PyTorch框架比较
    如何进行Keras vs PyTorch框架比较,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在 Keras 与 PyTorch 的对比中,作者还给出了相同神经...
    99+
    2023-06-04
  • Apache 和 ASP:如何在实时文件处理方面进行比较?
    Apache 和 ASP 是两种常用的服务器端技术,它们都有着处理文件和数据的能力。但是,它们在处理实时文件方面有所不同。在本文中,我们将比较 Apache 和 ASP 在实时文件处理方面的差异,并且给出一些示例代码。 Apache Ap...
    99+
    2023-10-18
    apache 实时 文件
  • 为什么禁止使用BigDecimal的equals方法做等值比较
    本篇内容介绍了“为什么禁止使用BigDecimal的equals方法做等值比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!BigDecim...
    99+
    2023-06-16
  • 如何重写hashcode和equals方法
    目录如何重写hashcode和equals方法Object源码理解需要重写equals()的场景需要重写hashcode()的场景原理分析补充HashMap知识hashcode方法文...
    99+
    2024-04-02
  • BigDecimal值在java中进行比较的方法有哪些
    这篇文章主要介绍了BigDecimal值在java中进行比较的方法有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、使用equals()方法不但要求两个BigDecim...
    99+
    2023-06-15
  • c语言如何进行字符串比较
    这篇文章将为大家详细讲解有关c语言如何进行字符串比较,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易的方...
    99+
    2023-06-14
  • 为什么要禁止使用BigDecimal的equals方法做等值比较
    本文小编为大家详细介绍“为什么要禁止使用BigDecimal的equals方法做等值比较”,内容详细,步骤清晰,细节处理妥当,希望这篇“为什么要禁止使用BigDecimal的equals方法做等值比较”文章能帮助大家解决疑惑,下面跟着小编的...
    99+
    2023-06-27
  • 在 PHP 中比较日期的不同方法
    本文将教你如何使用 5 种不同的技术在 PHP 中比较日期。在这些技术中,有 4 种将以一种或另一种形式使用内置的 PHP 函数,如 strtotime()、time() 和 date()。最后一种技术...
    99+
    2024-02-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作