== 和 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)用于比较对象的内容是否逻辑相等。

  • 例如,String、Integer 等类重写了 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() 判断对象的内容是否逻辑相等(需注意是否被正确重写)。

相关推荐
需要8268 小时前
分布式事务:Seata AT/TCC/SAGA 的取舍与踩坑
java·spring boot·分布式·spring·spring cloud
晨小安8 小时前
ThreadLocal及其内存泄漏问题深度解析
java·jvm·tomcat·哈希表
m0_587383009 小时前
深圳24小时自助健身房解决方案实战:从系统架构到部署指南
java·人工智能·spring boot·spring·系统架构·需求分析
郑州光合科技余经理9 小时前
同城电商系统:库存变更怎么同步到订单
java·开发语言·前端·后端·uni-app·php·ai编程
无序的浪9 小时前
测试博客-基于微服务的在线判题系统
java·spring cloud·docker·微服务·测试·在线判题
xfan_me10 小时前
维修保养记录精准版 API 对接实战指南
java·大数据·python
Keven-zhou10 小时前
不用先学前端框架,Java后端也能独立交付项目?飞算JavaAI实测
java
海上小飞龙10 小时前
改一个数,右边全得重算,这题怎么扛住两万次查询
java·c++·python
Leo.yuan10 小时前
从“看全局“到“评成效“:央国企穿透式监管六步链路,哪些厂商能真正闭环
java·大数据·人工智能
小马哥程序开发10 小时前
[点赞收藏免费领取 · 项目源码]57105基于Spring Boot的充电桩管理系统的设计与实现
java·spring boot·源码·课程设计·毕设·大作业·课设