讲师中心 微信公众号
AI工具推荐 视频效率加速

在Java里==和equals有什么区别_Java基础比较规则说明

冬芳君_4020

冬芳君_4020

发布时间:2026-01-28 13:29:32

|

446人浏览过

|

来源于php中文网

原创

==比较值或地址取决于类型:基本类型比值,引用类型比地址;equals()默认同==,重写后比内容,自定义类需同时重写hashCode()以满足集合要求。

在java里==和equals有什么区别_java基础比较规则说明

== 比较的是值还是地址,完全看变量类型

基本数据类型(int、char、boolean 等)用 ==,比的就是数值本身:int a = 5; int b = 5; a == b → true。但只要换成引用类型(比如 String、Customer),== 就只认内存地址:哪怕两个 new String("hello") 内容一模一样,== 也返回 false,因为它们是堆里两块不同的内存。

容易踩的坑:

  • 误把字符串字面量和 new String() 当成一回事:"abc" == new String("abc") 是 false,但 "abc" == "abc" 是 true(字符串常量池复用)
  • 对自定义类对象直接用 == 判断“内容是否相同”,结果永远是 false(除非真指向同一实例)

equals() 默认行为和 String 等类的重写差异

equals() 是 Object 类的方法,原始实现就是 return (this == obj) —— 和 == 完全等价。真正让它“有用”的,是像 String、Integer、Date 这些类主动重写了它,改成逐字符/逐字段比较内容。

实操建议:

立即学习“Java免费学习笔记(深入)”;

js2java
js2java

JavaScript 到 Java 全栈翻译助手,专为前端开发者学习 Java 或快速实现后端业务逻辑而设计。当用户提到以下场景时必须使用此技能: - "帮我把这段 JS 代码转成 Java" - "用 Java 怎么写这个逻辑" - "我习惯用 JS 写,想翻译成 Java" - "教我 Java,我要写后端接...

下载
  • 判断字符串内容是否一致,必须用 .equals(),别信 ==
  • 调用 equals() 前,先确认目标类是否重写了它;没重写的自定义类,equals() 和 == 效果一样
  • 永远避免 obj.equals(null),会抛 NullPointerException;更安全写法是 Objects.equals(a, b)

自定义类想用 equals() 比内容?重写规则不能漏

如果你写了个 Person 类,希望两个 Person 对象在 name 和 age 相同时就判定相等,就必须重写 equals() 方法。但只改 equals() 不够 —— 规范要求:只要重写了 equals(),就必须同步重写 hashCode(),否则放进 HashMap 或 HashSet 会出问题(比如找不到已存入的对象)。

关键点:

  • equals() 重写要满足:自反性、对称性、传递性、一致性、对 null 返回 false
  • 推荐用 Objects.equals(field1, other.field1) 处理可能为 null 的字段,省去判空
  • IDE(如 IntelliJ)可一键生成合规的 equals() 和 hashCode(),别手写

什么时候该用 ==,什么时候非用 equals() 不可

简单说:== 适合判断“是不是同一个东西”,equals() 适合判断“内容是不是一样”。比如检查某个配置对象是否是单例实例,用 ==;检查用户输入的密码和数据库存的密码是否一致,必须用 .equals()。

性能提示:

  • == 是 CPU 指令级比较,极快;equals() 是方法调用+逻辑判断,慢一点,但该用还得用
  • 字符串比较时,== 可作为快速失败检查(先看地址是否相同),再进 equals() 做内容比对,这是 String.equals() 源码里的标准写法
  • 包装类(如 Integer)有缓存机制:Integer a = 127; Integer b = 127; a == b 是 true,但 a = 128; b = 128 就是 false —— 别依赖这个,一律用 equals()

最易被忽略的一点:equals() 的语义是开发者定义的,不是语言强制的。你重写它,就意味着告诉所有调用方:“从此以后,这两个对象相等的标准,以我的实现为准”。一旦定义了,就要守规矩 —— 特别是 hashCode() 必须配套,否则集合类行为不可预测。

热门AI工具

更多
讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

LibLibAI
LibLibAI Hot

一款AI视频创作工具,主要用于国内领先的AI创意平台,以海量模型、低门槛操作与“创作-分享-商业化”生态,让小白与专业创作者都能高效实现图文乃至视频创意表达,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2791

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

534

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

482

2026.02.12

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

5999

2023.08.02

java中boolean的用法
java中boolean的用法

在Java中,boolean是一种基本数据类型,它只有两个可能的值:true和false。boolean类型经常用于条件测试,比如进行比较或者检查某个条件是否满足。想了解更多java中boolean的相关内容,可以阅读本专题下面的文章。

2130

2023.11.13

java boolean类型
java boolean类型

本专题整合了java中boolean类型相关教程,阅读专题下面的文章了解更多详细内容。

143

2025.11.30

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

549

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1678

2024.03.01

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

40

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn