当前位置: 首页 > news >正文

Java枚举比较用equals还是==

前言

前两天code review,leader说枚举比较用equals不要用==,当时任务比较多,直接改了,没有深究,今天有时间搜了一下,研究了一下枚举的实现,实际测试了一下,得出结论, 对于枚举,==和equals的效果是相同的

探究

源码

查看Enum的源码,可以发现Enum重写了equals且禁止重写,内部也是用的==实现的

public final boolean equals(Object var1) {
        return this == var1;
    }
复制代码

==和equals的区别参考这里

枚举的比较实际上是比较两个枚举对象的内存地址

枚举的实现

主要参考了这篇文章,十分详细,跟着作者的思路过了一遍,明白了不少,强烈推荐大家细读一遍

枚举是作为抽象类存在的,每个枚举类型都是作为一个static final字段存在,并且每个枚举类型在内部是作为子类实现的,并且枚举对象是单例的. 所以对于枚举的比较直接比较内存地址就可以了.这也是为什么jdk源码会重写equals并且声明为final

结论

基于枚举的特性,直接比较内存地址就可以,所以equals和==作用相同

相关文章:

  • vue两个组件间值的传递或修改方式
  • 如何在国内构建一个硅谷级的高效技术团队?
  • C#中的结构体与类的区别 (转载)
  • 如何用纯 CSS 创作一个记事本翻页动画
  • SpringBoot整合Angular应用第三弹-渲染RestAPI数据
  • CentOS从零开始部署Nodejs项目
  • d6
  • Jeff Bean谈Flink与流式处理的5大新发现
  • 解决 scapy “NameError: global name 'wrpcap' is not defined” 错误
  • 【xshell】xshell设置快捷键 设置Ctrl+C Ctrl+V快捷键为复制粘贴
  • Android FlatBuffers数据交互
  • 【man】 查看命令帮助文档
  • react 使用 react-loadable分包
  • Emacs学习(一)
  • 存档3
  • $translatePartialLoader加载失败及解决方式
  • CentOS 7 防火墙操作
  • centos安装java运行环境jdk+tomcat
  • java2019面试题北京
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Python_OOP
  • React组件设计模式(一)
  • Vue 动态创建 component
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 爬虫模拟登陆 SegmentFault
  • 排序算法学习笔记
  • 批量截取pdf文件
  • 容器服务kubernetes弹性伸缩高级用法
  • 使用putty远程连接linux
  • 我的业余项目总结
  • 一个完整Java Web项目背后的密码
  • 正则表达式小结
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • %@ page import=%的用法
  • (03)光刻——半导体电路的绘制
  • (二)换源+apt-get基础配置+搜狗拼音
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (三十五)大数据实战——Superset可视化平台搭建
  • (算法)前K大的和
  • (转)h264中avc和flv数据的解析
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .gitignore文件设置了忽略但不生效
  • .NET Remoting学习笔记(三)信道
  • .Net Winform开发笔记(一)
  • .net 获取url的方法
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • // an array of int
  • @TableLogic注解说明,以及对增删改查的影响
  • [20170713] 无法访问SQL Server