[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] 为什么字符串比较不能用两个等号(==)的主要内容,如果未能解决你的问题,请参考以下文章

double类型大小比较的方法

double类型大小比较的方法

Java双等号,Equals(),HashCode()小结

java 字符串的比较

根据你的理解,简要说明使用双等号(==)和equals()方法判断两个字符串是不是相等有啥区别

String题目解析1