2 Java中 == 和 equals 和 hashCode 的区别

==是一个比较运算符;

若比较的是基本数据类型,则比较的是值;

若比较的是引用数据类型,则比较的是它们在内存中的内存地址。

说明:对象是存放在堆中,栈中存放的是对象的引用,因此==是对栈中的值进行比较,若返回true,代表变量的内存地址相等。

equals

equals是Object类的一个方法,底层是通过”==”实现的;

比较的是引用类型的数据内存地址是否相等(即,是不是同一个对象)。

说明:若类中重写了equals方法,就要根据具体代码实现来确定,一般在开发中重写了equals方法比较的就是对象的内容。

hashCode

hashCode也是Object类的一个方法,且是一个native方法,主要用于计算对象的哈希码值;

之所以有hashCode方法,是因为对象在进行批量比较时,hashCode要比equals快。

比如:当我们向HashMap中添加新元素时,必须保证key是唯一的,这时就会涉及到key的比较,首先调用元素的hashCode()方法, 然后在进行&运算,定位到它在数组中的位置,若该位置没有元素则可以直接存储;若该位置有元素,再调用它的equals方法与新元素进行比较,若相同说明key重复,不能存储。若不相同,则将其存到该位置的链表头部。

Original: https://www.cnblogs.com/xilichenbokeyuan/p/6385448.html
Author: 卫盾
Title: 2 Java中 == 和 equals 和 hashCode 的区别

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576045/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • requests模块的使用

    安装:pip install requests get请求 1、发送 get 请求 import requests header = { ‘referer’: ‘https://w…

    数据库 2023年6月9日
    0107
  • 开发思想

    解决的问题:一类对象,不同对象有不同的处理 顶级接口 定义规范,面向接口编程 抽象策略 定义一套模板,不同的交给不同的策略实现 具体策略 枚举 对象标识 –具体策略 策…

    数据库 2023年6月11日
    086
  • Springboot学习笔记(一)—— 安装

    springboot越来越流行了,相比较于springMVC,springboot采用了一种约定大于配置的理念,可以一键安装,一键运行,一键部署,内置tomcat,省去了一大堆配置…

    数据库 2023年6月9日
    0105
  • 运行jar包使用外部依赖

    nohup java -Dloader.path=”lib/” -Dfile.encoding=utf-8 -jar test.jar > test….

    数据库 2023年6月9日
    064
  • Spring AOP

    AOP简介: 面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。 *作用:在不惊动原始设计的基础上为其进行功能增强。 AOP核心概念 (1)Aspec…

    数据库 2023年6月16日
    0106
  • centos安装chrome和解决chrom点击打不开页面的问题

    1、去官网下载chrom的rpm包 2、进入到下载包的目录,执行:yum -y localinstall google-chrome-stable_current_x86_64.r…

    数据库 2023年6月11日
    0103
  • Python–反射

    反射是一个很重要的概念,它可以把字符串映射到实例的变量或者实例的方法然后可以去执行调用、修改等操作。它有四个重要的方法: 1、getattr 获取指定字符串名称的对象属性 2、se…

    数据库 2023年6月9日
    083
  • 面试记录

    JVM线程属于用户态还是内核态 当进程运行在ring3级别时为用户态,ring0级别时为内核态 有些操作需要有内核权限才能进行,那么有三种由用户态切换到内核态的情况: 系统调用:操…

    数据库 2023年6月16日
    0110
  • PDF转换OFD(Java实用版)

    前言: 在项目中用到了,就写一下哈 OFD简介 百度百科:https://baike.baidu.com/item/OFD/56227163?fr=aladdin OFD(Open…

    数据库 2023年6月16日
    0143
  • eclipse调用MySQL数据库的方法

    今天来总结一下使用如何使用eclipse调用MySQL数据库的数据。 一、设置eclipse 我们首先来设置一下eclipse。 在下部的Servers中右键选择new,选择ser…

    数据库 2023年6月11日
    0139
  • 商城限时秒杀功能系统

    我们在网购的时候常常会看到”限时””秒杀”等字眼,商家在产品的促销上除了发放优惠券,还喜欢用限时秒杀的方式, 让价格和原本的售价形成…

    数据库 2023年6月14日
    0108
  • python爬取博客圆首页文章链接+标题

    新人一枚,初来乍到,请多关照 来到博客园,不知道写点啥,那就去瞄一瞄大家都在干什么好了。 使用python 爬取博客园首页文章链接和标题。 首先当然是环境了,爬虫在window10…

    数据库 2023年6月11日
    0128
  • Javascript基础

    作者导言: 引用偶像刘德华的一句话 “学到的就要教人,赚到的就要给人”! 以下是关联的web前端基础知识文章,通过这些文章,您既可以系统地学习和了解这些知识…

    数据库 2023年6月14日
    0113
  • Node版本更新及切换

    Node版本升级 清除npm缓存 npm cache clean -f n&#x6A…

    数据库 2023年6月16日
    0132
  • Spring5完整版详解

    1、Spring 1.1简介 2002,首次退出来Spring框架的雏形:interface21框架 Spring框架即以interface21框架为基础,经过重新设计,并不断丰富…

    数据库 2023年6月16日
    089
  • 对炒股看法

    1. 自己的炒股情况 2017 年左右接触炒股, 陆续入迷. 个人情况输的多. 主要输在阅历浅, 策略不连贯, 心态不稳. 期间翻阅了大量书籍, 学到了很多, 开拓了眼界. 真的是…

    数据库 2023年6月9日
    093
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球