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)

大家都在看

  • CentOS 7 源码安装 Zabbix 6.0

    Zabbix 主要有以下几个组件组成: Zabbix Server:Zabbix 服务端,是 Zabbix 的核心组件。它负责接收监控数据并触发告警,还负责将监控数据持久化到数据库…

    数据库 2023年6月11日
    065
  • Redisson

    ​ Redisson是架设在Redis基础上的一个Java驻内存数据网格(In-Memory Data Grid)。充分的利用了Redis键值数据库提供的一系列优势,基于Java实…

    数据库 2023年6月6日
    084
  • JUC部分并发类使用方式

    下面介绍的是JUC包下一些线程安全类的一些简单使用和一些小demo。 信号量,即可以同时使用的线程数,tryrequire就是将信号量减一,release就是信号量+1,当等于0就…

    数据库 2023年6月11日
    055
  • 云上RDS架构

    概述 越来越多的企业选择上云,最基础的云服务就是IaaS(Infrastructure as a Service)服务,直观理解就是虚拟主机,用户不用再自建机房,自己购买服务器,而…

    数据库 2023年6月9日
    0100
  • 2022-08-16 数据库查询语言之——-DQL

    重点,DQL是我们每天都要接触编写最多也是最难的SQL,该语言用来查询记录,不会修改数据库和表结构。 构建数据库 创建一张student表: DROP TABLE IF EXIST…

    数据库 2023年5月24日
    070
  • buuctf 派大星的烦恼

    题目如下 首先找到伤疤并提取出来,发现一共有256个数据,根据题目中的提示答案为32位的字符串,再根据伤疤只有两种状态22和44,联想到每8个伤疤拼成8位二进制,22表示0,44表…

    数据库 2023年6月11日
    0136
  • Mybatis SqlNode源码解析

    1.ForEachSqlNode mybatis的foreach标签可以将列表、数组中的元素拼接起来,中间可以指定分隔符separator <select id="…

    数据库 2023年6月16日
    068
  • MySQL explain结果Extra中”Using Index”与”Using where; Using index”区别探究

    问题背景 最近用explain命令分析查询sql执行计划,时而能看到Extra中显示为”Using index”或者”Using where; …

    数据库 2023年5月24日
    068
  • SQLZOO练习7–Using NULL

    teacher表: iddeptnamephonemobile 101 1 Shrivell 2753 07986 555 1234 102 1 Throd 2754 07122 …

    数据库 2023年5月24日
    068
  • 2022-08-18 MySQL常用函数

    聚合函数 count:计数。count(*)≈count(1)>count(主键) count():MySQL对count()底层优化,count(0)。 count(1) …

    数据库 2023年6月14日
    0124
  • window server2019+vmware16+Ubuntu20部署网站记录

    准备: 1:物理机一台,我的配置如下: 2:U盘10G以上一个,系统启动盘制作使用 3:Windows Server2019系统镜像 3-1:我下载的是server2019版本系统…

    数据库 2023年6月6日
    074
  • Mysql性能调优-工具篇

    首先祭出官方文档(这是5.7的,请自行选择版本): 如果你不想读英语,只需阅读这篇文章: [En] If you don’t want to read English,…

    数据库 2023年5月24日
    076
  • ShardingSphere 云上实践:开箱即用的 ShardingSphere-Proxy 集群

    本次 Apache ShardingSphere 5.1.2 版本更新为大家带来了三大全新功能,其中之一即为使用 ShardingSphere-Proxy chart 在云环境中快…

    数据库 2023年6月16日
    080
  • 4_Spring

    Spring的基本组成: 1、最完善的轻量级核心框架。 2、通用的事务管理抽象层。 3、JDBC抽象层。 4、集成了Toplink, Hibernate, JDO, and iBA…

    数据库 2023年6月11日
    065
  • 2022-8-27 vue 第一天

    什么是vue? Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建…

    数据库 2023年6月14日
    066
  • MySQL 数据库

    内容概要 数据演变 数据存储发展 数据库类型 SQL与NoSQL的由来 下载安装MySQL MySQL文件目录 系统服务 密码相关 8.0版本的小问题 基本SQL语句 数据库的增删…

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