==比较引用或基本值,equals()可重写以比较逻辑内容;String等类已重写equals()按内容比较,自定义类需重写并遵守规范,null安全推荐Objects.equals()。

在Java中,== 和 equals() 的核心区别在于:前者比较的是**引用是否指向同一内存地址**(即是否为同一个对象),后者默认行为相同,但**可被重写以比较对象的逻辑内容是否相等**。
== 是运算符,对基本类型(如 int、char)直接比较数值;对引用类型(如 String、自定义类实例)则比较两个变量是否指向堆中同一个对象。
s1 == s2 通常为 true(字符串常量池优化)s1 == s2 一定为 false(两个不同对象)equals() 是 Object 类的方法,默认实现就是用 == 比较引用。但多数常用类(如 String、Integer、ArrayList)都重写了它,使其按业务含义判断相等性——比如两个 String 内容一样就返回 true。
equals()(同时建议重写 hashCode())Objects.equals() 辅助判空忽略 null 安全、混淆引用与值比较,是初学者高频出错点。
立即学习“Java免费学习笔记(深入)”;
obj.equals("abc") 前若 obj 可能为 null,会抛 NullPointerException
"abc".equals(obj) 或 Objects.equals(obj, "abc")
Integer a = 127; Integer b = 127; → a == b 为 true(自动装箱缓存范围 -128~127),但 Integer c = 128; Integer d = 128; → c == d 为 false
判断“是不是同一个对象”用 ==;判断“内容是否一样”用 equals()(确保已重写且非 null)。
list.contains(obj))、键值匹配(map.get(key))都依赖 equals()
==
equals(),除非你明确需要判断是否为同一实例以上就是在Java中==和equals有什么不同_Java对象比较机制说明的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号