详解Java中“==”与equals()的区别

发布时间 - 2026-01-10 22:50:02    点击率:

Java中“==”与equals()的区别

 对于关系操作符“==”,《Java编程思想》中是这样描述的:“关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系”。这里的操作数的“值”值得我们注意。对于8种基本数据类型(boolean,byte,char,short,int,float,double,long),它们的变量直接存储的就是“值”。所以,我们用“==”对基本数据类型的变量进行比较时,实际比较的就是变量存储的值,例如:

public static void main(String[] args) {
    int a = 5, b = 5;
    System.out.println(a == b);
  }

很明显,程序将输出:true。但是,下面这段代码呢?

public static void main(String[] args) {
    Integer c = new Integer(5), d = new Integer(5);
    System.out.println(c == d);
  }

我们运行程序,发现输出的是:false。这是因为Integer并非Java中的基本数据类型,其变量c、d在Java中被称为指向对象的引用,其存储的“值”是对象在内存中的地址,而非值“5”本身。所以,c和d实际存储的分别是两个value值都为“5”的Integer对象的地址,这两个对象不在同一块内存空间,“==”比较的结果自然是false了。

  那么equals()方法比较的是什么呢?equals()是基类Object中定义的方法,在Object类中,equals()方法定义为:

public boolean equals(Object obj) {
    return (this == obj);
  }

这等价于“==”。其实,equals()方法的意义在于重写,否则对equals()的调用是没有意义的。例如,继承自Object的Integer类便重写了equals()方法:

public boolean equals(Object obj) {
    if (obj instanceof Integer) {
      return value == ((Integer)obj).intValue();
    }
    return false;
  }

该方法的意义是对value值进行比较,那么如果我们对于两个具有相同value值的Integer对象调用equals()进行比较:

public static void main(String[] args) {
    Integer c = new Integer(5), d = new Integer(5);
    System.out.println(c.equals(d));
  }

结果便是true。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Java  # ==  # 与equals()  # 与equals()区别  # 与equals()详解  # Java equals()方法使用详解及总结  # Java中==符号与equals()的使用详解(测试两个变量是否相等)  # 详解Java中==和equals()的区别  # Java中==和equals()的区别总结  # Java中equals()方法实例详解  # Java中equals()方法重写实现代码  # Java中的== 和equals()方法详解与实例  # 详解java==运算符和equals()方法的区别  # Java自定义实现equals()方法过程解析  # Java中equals()方法的理解与使用方法例子  # 的是  # 是这样  # 这段  # 这两个  # 希望能  # 写了  # 重写  # 被称为  # 什么呢  # 而非  # 很明显  # 谢谢大家  # 这是因为  # 这等  # 都为  # 则对  # 类中  # double  # long  # int 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  Laravel怎么连接多个数据库_Laravel多数据库连接配置  如何在万网自助建站平台快速创建网站?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  如何在阿里云ECS服务器部署织梦CMS网站?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  如何在IIS服务器上快速部署高效网站?  Linux系统运维自动化项目教程_Ansible批量管理实战  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  网站制作壁纸教程视频,电脑壁纸网站?  大同网页,大同瑞慈医院官网?  如何在腾讯云服务器上快速搭建个人网站?  高端网站建设与定制开发一站式解决方案 中企动力  Laravel怎么使用Intervention Image库处理图片上传和缩放  网站制作软件有哪些,制图软件有哪些?  如何生成腾讯云建站专用兑换码?  C语言设计一个闪闪的圣诞树  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  php打包exe后无法访问网络共享_共享权限设置方法【教程】  公司网站制作需要多少钱,找人做公司网站需要多少钱?  高端企业智能建站程序:SEO优化与响应式模板定制开发  javascript基本数据类型及类型检测常用方法小结  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  如何在橙子建站中快速调整背景颜色?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  如何快速搭建个人网站并优化SEO?  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  深圳网站制作平台,深圳市做网站好的公司有哪些?  手机网站制作与建设方案,手机网站如何建设?  Swift中swift中的switch 语句  Swift中switch语句区间和元组模式匹配  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  米侠浏览器网页背景异常怎么办 米侠显示修复  如何在服务器上三步完成建站并提升流量?  WEB开发之注册页面验证码倒计时代码的实现  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  奇安信“盘古石”团队突破 iOS 26.1 提权  佛山企业网站制作公司有哪些,沟通100网上服务官网?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?