详解 Java 中 equals 和 == 的区别

发布时间 - 2026-01-11 00:03:46    点击率:

详解 Java 中 equals 和 == 的区别

1 前言

  在 Java 语言中,equals 和 == 都是用来检测两个字符串是否相等,返回值也都是布尔型(boolean),但是两者在内部比较的处理中却不尽相同,因此在需要检测两个字符串是否相等的时候,我们一定要特别的注意,选择适当的检测方式,防止造成不必要的 bug。从表面上来看,这种 bug 很像随机产生的间歇性错误。

2 区别

  在需要检测两个字符串是否相等的时候,我们可以使用 equals 方法。对于表达式:

s.equals(t)

  如果字符串 s 与字符串 t 相等,则返回 true;否则,返回 false。需要注意的是,s 与 t 可以是字符串常量也可以是字符串变量。例如,下面的表达式就是合法的:

"Hello".equals(greating)

  更进一步,如果想要检测两个字符串是否相等,而不区分大小写,可以使用 equalsIgnoreCase 方法。例如,下面的表达式的值就是 true:

"Hello".equals("hello")

  在此,一定不能用 == 运算符来检测两个字符串是否相等!因为恒等运算符只能够确定两个字符串是否放置在同一个位置上。当然,如果两个字符串放置在同一个位置上,它们必然相等。但是,完全有可能将内容相同的多个字符串的拷贝位置放置在不同的位置上。

  如果虚拟机始终将相同的字符串共享,就可以使用 == 运算符来检测两个字符串是否相等。但实际上,只有字符串常量是共享的,而 + 和 substring 等操作产生的结果并不是共享的。

3 示例

/**
 * @author 维C果糖
 * @create 2017-02-14
 */

public class equalsAndHD {
  public static void main(String[] args) {
    String greating = "Hello";

    if (greating.equals("Hello")){
      System.out.println("1,通过 equals 输出的结果为:greating 与 Hello 的值相等!");
    }else {
      System.out.println("1,通过 equals 输出的结果为:greating 与 Hello 的值不相等!");
    }

    if ((greating.substring(0,2) + "llo") == "Hello"){
      System.out.println("2,通过 == 输出的结果为:greating 与 Hello 的值相等!");
    }else {
      System.out.println("2,通过 == 输出的结果为:greating 与 Hello 的值不相等!");
    }
  }
}

运行以上程序后,结果如下图所示:

通过观察以上的运行结果,显然可以发现,该程序完成验证了我们之前的观点。

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


# Java  #   # equals  #   # ==  # 的区别  # 的对比  # Java中==运算符与equals方法的区别及intern方法详解  # 详解Java中“==”与equals()的区别  # java String类常量池分析及"equals"和"==”区别详细介绍  # java equals和==的区别详解  # java equals和=  # ==的区别详细介绍  # Java中==与equals的区别小结  # java中equals和等号(==)的区别浅谈  # 详解java==运算符和equals()方法的区别  # 都是  # 运算符  # 可以使用  # 的是  # 不相等  # 多个  # 有可能  # 在此  # 而不  # 希望能  # 在同一个  # 布尔  # 所示  # 表面上  # 不能用  # 谢谢大家  # 很像  # 需要注意  # 中却  # 如下图 


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


相关推荐: Python自然语言搜索引擎项目教程_倒排索引查询优化案例  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  BootStrap整体框架之基础布局组件  Linux系统命令中screen命令详解  如何在云主机上快速搭建多站点网站?  javascript中的try catch异常捕获机制用法分析  网站制作大概多少钱一个,做一个平台网站大概多少钱?  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel如何处理和验证JSON类型的数据库字段  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  实例解析Array和String方法  如何快速建站并高效导出源代码?  微信h5制作网站有哪些,免费微信H5页面制作工具?  C语言设计一个闪闪的圣诞树  ,怎么在广州志愿者网站注册?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  利用 Google AI 进行 YouTube 视频 SEO 描述优化  如何用低价快速搭建高质量网站?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何快速打造个性化非模板自助建站?  如何快速搭建虚拟主机网站?新手必看指南  Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  Laravel怎么在Controller之外的地方验证数据  如何在云主机快速搭建网站站点?  如何快速生成凡客建站的专业级图册?  黑客如何利用漏洞与弱口令入侵网站服务器?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  如何在万网利用已有域名快速建站?  EditPlus中的正则表达式实战(6)  JS中对数组元素进行增删改移的方法总结  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  如何在云指建站中生成FTP站点?  如何获取上海专业网站定制建站电话?