当前位置: 首页 > news >正文

== 和 equals 的区别

1. == 运算符

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

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

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

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())。

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

    3. 总结

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

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

http://www.dtcms.com/a/209064.html

相关文章:

  • 旧物回收小程序开发——让闲置再生价值,用科技撬动绿色经济
  • 如何把一台电脑作为另外一台电脑的显示器
  • 对比关系型数据库与NoSQL数据库
  • 【数组的定义数组与内存的关系】
  • 基于微信小程序的高校校园微活动管理系统设计与实现(源码+定制+开发)高校微信小程序校园活动发布与互动平台开发 面向大学生群体的校园活动移动平台设计与实现
  • Redis核心用法与通用命令全解析
  • 212. 单词搜索 II
  • 机器人收硬币算法c++,完整代码可运行
  • TDengine 高可用——双副本
  • Android Raspberry 请求 api 失败 iOS 请求成功【ssl 证书配置问题】
  • 【LangChain大模型应用与多智能体开发 ① 初识LangChain 】
  • 人工智能100问☞第30问:什么是损失函数?
  • 20250523-BUG:无法加载“GameLib/Framework.h“头文件(已解决)
  • 【Kafka】编写消费者开发模式时遇到‘未解析的引用‘SIGUSR1’’
  • 20250523-BUG-E1696:无法打开元数据文件“platform.winmd(已解决)
  • UI 设计|提高审美|Linear UI风格分享
  • 钉钉出口IP有哪些
  • ECharts图表工厂,完整代码+思路逻辑
  • 【GAN网络入门系列】二,DCGAN人脸图片生成与转置卷积讲解
  • Redis7 新增数据结构深度解析:ListPack 的革新与优化
  • 软件测试(4) 白盒测试
  • 1536. 【中山市第十一届信息学邀请赛决赛】同质(same)
  • 63. 不同路径 II
  • siparmyknife:SIP协议渗透测试的瑞士军刀!全参数详细教程!Kali Linux教程!
  • 运维打铁:生产服务器用户权限管理方案全解析
  • 前端地图数据格式标准及应用
  • vue项目表格甘特图开发
  • 告别“盘丝洞”车间:4-20mA无线传输如何重构工厂神经网?
  • Python打卡训练营学习记录Day34
  • sso登录(单点登录)实现