理解Java String类equals方法的内部逻辑
问题一:equals方法循环运行,且数组长度不一致
- Compact Strings 功能被禁用时(Compact Strings 为 false),value 字节数组固定采用 UTF16 编码。
- 当比较条件 (!Compact Strings || this.coder == aString.coder) 为 false 时,表明字符串拥有不同的编码器,比较失败。
- 某个条件为 false 时,equals 方法将直接返回 false,不会进行循环运行。
问题二:传递参数差异
- equals 方法在内部会规范化参数,将其转换为 String 类的实例。
- 将两个字符串 "a" 传递给 equals 方法时,无论是否通过 new String("a") 创建,最终都会被表示为字符串常量池中的相同 String 对象,因此传递的参数将是一致的。
equals方法比较逻辑
立即学习“Java免费学习笔记(深入)”;
- 判断是否都是字符串对象,否则比较失败。
- 判断两个字符串是否具有相同的编码器(受 Compact Strings 影响)。
- 编码器一致时,以字节方式逐个比较字符串内部数据,如 StringLatin1.equals(value, aString.value) 所示。
以上就是Java String类的equals方法是如何工作的?的详细内容,更多请关注抖狐科技其它相关文章!
本站文章均为抖狐网站建设摘自权威资料,书籍,或网络原创文章,如有版权纠纷或者违规问题,请即刻联系我们删除,我们欢迎您分享,引用和转载,我们谢绝直接复制和抄袭!感谢...
我们猜你喜欢
-
篝火2手机版快速回血方法介绍
篝火2怎么回血?游戏中角色是有生命值设定的,当人物受到攻击或者进行战斗的时候,会导致体能下降,需要进行恢复。下面带来篝火2回血方法说明,希望对玩家们有所帮助。 篝火2未知的海岸回血方法1、搭建猎手栖息...
-
《英雄的安息》登陆PC 城镇建造经营模拟
Vanargand Games制作并发行,一款城镇建造经营模拟新游《英雄的安息》登陆PC(Steam/Epic Games)平台正式推出,限时八折优惠,本作暂不支持中文。《英雄的安息》:Steam地址...
-
折叠屏手机为什么创新
折叠屏手机创新的原因包括:扩展屏幕空间,提供更大的画布;增强多任务处理,允许同时显示多个应用程序;便携性和灵活性,折叠后更加紧凑便携;独特的交互方式,提供新的交互可能性;耐用性和可靠性,改进的柔性显示...
-
centos删除文件后占用空间没减少怎么解决
删除 centos 文件后,占用空间未减少是因为文件系统未立即回收空间,解决方法如下:启用 fstrim 定期任务回收空间。手动运行 fstrim 立即回收空间。检查文件系统类型,某些文件系统有内置回...
-
Golang 函数的异步编程实践:提升响应能力
异步编程可提升 golang 函数响应能力,通过 goroutine 并发执行任务:使用 goroutine 并行执行不同任务,提高性能和响应能力。利用 channels 在 goroutine 之间...