== 和 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() 判断对象的内容是否逻辑相等(需注意是否被正确重写)。

相关推荐
桦说编程4 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen4 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研4 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员5 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
甄超锋5 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国6 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~6 小时前
《设计模式》装饰模式
java·设计模式
A尘埃6 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统
青云交6 小时前
Java 大视界 -- 基于 Java 的大数据可视化在城市交通拥堵治理与出行效率提升中的应用(398)
java·大数据·flink·大数据可视化·拥堵预测·城市交通治理·实时热力图
CHEN5_027 小时前
【Java基础面试题】Java基础概念
java·开发语言