为了账号安全,请及时绑定邮箱和手机立即绑定

Java比较两个字符串的=是假的吗?

Java比较两个字符串的=是假的吗?

繁花不似锦 2019-07-03 17:35:24
Java比较两个字符串的=是假的吗?字符串部件是String[6]:["231", "CA-California", "Sacramento-155328", "aleee", "Customer Service Clerk", "Alegra Keith.doc.txt"]但当我比较parts[0]带着"231":"231" == parts[0]上面的结果是假的,我很困惑,有人能告诉我为什么吗?
查看完整描述

3 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

这个==运算符比较对象引用,而不是比较StringS.

的值比较Strings,使用String.equals方法:

"231".equals(parts[0]);

对于Java中的任何其他对象来说,这都是正确的-当比较值时,始终使用equals方法,而不是使用==接线员。

这个equals方法是Object,并且应该被类重写,这些类将以某种方式进行比较。


查看完整回答
反对 回复 2019-07-03
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

如果字符串不是内部的,那么=检查引用标识。用途:

 "231".equals(parts[0]);

相反。


查看完整回答
反对 回复 2019-07-03
?
慕村225694

TA贡献1880条经验 获得超4个赞

以下打印出“真”字;

String s = "231";if(s == "231"){
    System.out.println("true");}else{
    System.out.println("false");}

这是因为String是不可变的,java将尽量节省空间,因此它指向相同的内存引用。

然而,以下打印出来的“假”:

String s = new String("231");if(s == "231"){
    System.out.println("true");}else{
    System.out.println("false");}

new将迫使它将字符串存储在新的内存位置。

顺便说一下,你应该一直用.equals()比较字符串(对于这种情况)


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 471 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信