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

相关推荐
听风吟丶1 小时前
MyBatis 深度实战:从基础映射到企业级性能优化
java·tomcat
仟濹1 小时前
【Java 基础】面向对象 - 继承
java·开发语言
6***83051 小时前
微服务搭建----springboot接入Nacos2.x
java
likuolei2 小时前
XML 元素 vs. 属性
xml·java·开发语言
自不量力的A同学2 小时前
Spring Boot 4.0.0 正式发布
java·spring boot·后端
d***29242 小时前
【spring】Spring事件监听器ApplicationListener的使用与源码分析
java·后端·spring
5***b973 小时前
解决报错net.sf.jsqlparser.statement.select.SelectBody
java
q***95223 小时前
Tomcat下载,安装,配置终极版(2024)
java·tomcat
2***d8853 小时前
详解tomcat中的jmx监控
java·tomcat
无敌最俊朗@3 小时前
Qt事件循环队列剖析!!!
java