码迷,mamicode.com
首页 > 编程语言 > 详细

[Java] 为什么字符串比较不能用两个等号(==)

时间:2019-04-22 16:34:48      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:lse   一个   substring   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] 为什么字符串比较不能用两个等号(==)

标签:lse   一个   substring   java虚拟机   函数   因此   多个   字符串比较   就是   

原文地址:https://www.cnblogs.com/shuai2019/p/10750865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!