== 和 equals 的区别

1. == 运算符

  • 比较的是对象的引用(内存地址),判断两个对象是否指向堆内存中的同一块地址。

  • 对于基本数据类型(如 int, char, double 等),== 直接比较的是是否相等。

  • 对于引用类型(如 String, 自定义类对象等),== 比较的是引用是否相同(即是否为同一个对象)。

java 复制代码
String s1 = new String("hello");
String s2 = new String("hello");
String s3 = s1;

System.out.println(s1 == s2); // false(不同对象,地址不同)
System.out.println(s1 == s3); // true(s3 和 s1 指向同一个对象)

2. equals() 方法

  • 默认行为与 == 相同 (比较引用),但通常被重写(Override)用于比较对象的内容是否逻辑相等

  • 例如,StringInteger 等类重写了 equals(),使其比较的是对象的值而非引用。

  • 如果自定义类需要比较内容,必须重写 equals()(同时通常也要重写 hashCode())。

    java 复制代码
    String s1 = new String("hello");
    String s2 = new String("hello");
    
    System.out.println(s1.equals(s2)); // true(String 重写了 equals,比较字符内容)

    3. 总结

  • 共同点:都是用于比较操作

  • 不同点:用 == 判断是否为同一个对象(或基本类型的值相等)。

equals() 判断对象的内容是否逻辑相等(需注意是否被正确重写)。

相关推荐
广西千灵通网络科技有限公司20 分钟前
基于Java的话剧购票小程序【附源码】
java·小程序·apache
苏小瀚23 分钟前
[Java] idea的调试介绍
java·intellij-idea
JWenzz139 分钟前
Redis删除策略
java·数据库·redis·缓存
幻听嵩的留香1 小时前
javaEE课程项目-壁纸管理系统
java·java-ee
liubo666_1 小时前
SpringMVC(结合源码浅析工作流程)
java·spring·springmvc
speop1 小时前
TASK05【Datawhale 组队学习】系统评估与优化
android·java·学习
星沁城1 小时前
108. 将有序数组转换为二叉搜索树
java·数据结构·leetcode
在未来等你2 小时前
互联网大厂Java求职面试:云原生架构与AI应用集成解决方案
java·spring cloud·微服务·ai·云原生·kubernetes·大模型
向哆哆2 小时前
Java 依赖管理工具:使用 Sonatype Nexus 管理项目依赖
java·开发语言
Uranus^2 小时前
深入解析Spring Boot与Spring Cloud在微服务架构中的实践与应用
java·spring boot·spring cloud·微服务·分布式系统