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

字符串比较中==和equals的区别(Java)

Java字符串比较时==和equals的区别

在 Java 中,字符串比较可以使用 ==equals() 方法。它们的区别如下:

  1. == 比较的是两个字符串对象的内存地址是否相同,也就是判断它们是否是同一个对象。如果两个字符串对象的内存地址相同,则 == 返回 true,否则返回 false

  2. equals() 比较的是两个字符串对象的内容是否相同。如果两个字符串对象的内容相同,则 equals() 返回 true,否则返回 false

举个例子,假设有两个字符串对象 s1s2,它们的值都是 "hello"。则使用 == 比较时,因为 s1s2 对象的内存地址不同,所以 s1 == s2 的结果是 false。而使用 equals() 比较时,由于 s1s2 对象的内容相同,所以 s1.equals(s2) 的结果是 true


Tips: 需要注意的是,当使用 String 类型的字面值来创建字符串时,Java 会自动将其缓存起来以提高性能。这意味着对于相同的字符串常量,它们的内存地址是相同的

例如:

String s1 = "hello";
String s2 = "hello";

在上述代码中,因为 "hello" 是一个字符串常量,所以 s1s2 对象的内存地址是相同的。因此,使用 == 比较时,s1 == s2 的结果是 true

如果要比较字符串对象的内容是否相同,应该使用 equals() 方法,而不是 == 运算符。

String s1 = "hello";
String s2 = "hello";

String s3 = new String("hello");
String s4 = new String("hello");

System.out.println(s1 == s2); // true,因为它们引用相同的字符串常量
System.out.println(s1.equals(s2)); // true,内容相同

System.out.println(s1 == s3); // false,不同的对象,不同的内存地址
System.out.println(s1.equals(s3)); // true,内容相同

System.out.println(s3 == s4); // false,不同的对象,不同的内存地址
System.out.println(s3.equals(s4)); // true,内容相同


http://www.kler.cn/a/227487.html

相关文章:

  • Java 数据结构 二叉树(二)红黑树
  • 开源浏览器Firefox:使用Docker本地部署并远程访问进行测试
  • Linux的7个运行级别
  • SQL Server 函数参考手册(SQL Server 字符串函数)
  • 《Vue3 基础知识》 使用 GoGoCod 升级到Vue3+ElementPlus 适配处理
  • 线程和进程的区别及基础线程创建
  • 为什么说TiDB在线扩容对业务几乎没有影响
  • c语言:贪吃蛇的实现
  • 知识图谱推理方法综述
  • 适用于嵌入式单片机的压缩算法
  • 使用gcc/g++查看C语言预处理,编译,汇编,连接,以及动静态库的区分
  • Redis 哨兵(Sentinel)
  • Elastic Search 6.x 版本 rollover 配置
  • 探索前端开发框架:React、Angular 和 Vue 的对决(一)
  • 数据结构中的时间复杂度和空间复杂度基础
  • android tv开发-1,leanback
  • 稀疏场景高性能训练方案演变|京东广告算法架构体系最佳实践
  • C语言内存分配函数知识汇总
  • Android 高德地图切换图层
  • Python实现设计模式-策略模式