[Java] 为什么字符串比较不能用两个等号(==)
Posted zhengshuai0928
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Java] 为什么字符串比较不能用两个等号(==)相关的知识,希望对你有一定的参考价值。
Java中,使用"=="比较字符串时,判断的是两个字符串是否存放在相同的位置。如果两个字符串存放在相同的位置,那么它们就是相同的,使用"=="比较的结果也就是True。但Java虚拟机并不总是使两个相同的字符串共享一个位置,它可能会存放多个相同的拷贝在不同的位置。
只有通过字面赋值的时候,相同的字符串才会共享位置:
例如:x = "Hello"; y = "Hello";
x == y; 就是True
x == "Hello"; 也是True
但如果另有一个变量z,不是通过这种字面的方式被赋值的,即便z的值也是"Hello",
x == z; 的结果却是False
例如 x.substring(0,3) == "Hel"; 的结果就是False
因此,在进行字符串比较时,不推荐使用"==",推荐使用equals函数
以上是关于[Java] 为什么字符串比较不能用两个等号(==)的主要内容,如果未能解决你的问题,请参考以下文章