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

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

字符串部件是String[6]:

["231", "CA-California", "Sacramento-155328", "aleee", "Customer Service Clerk", "Alegra Keith.doc.txt"]

但当我比较parts[0]带着"231":

"231" == parts[0]

上面的结果是假的,

我很困惑,有人能告诉我为什么吗?


繁花不似锦
浏览 472回答 3
3回答

手掌心

这个==运算符比较对象引用,而不是比较StringS.的值比较Strings,使用String.equals方法:"231".equals(parts[0]);对于Java中的任何其他对象来说,这都是正确的-当比较值时,始终使用equals方法,而不是使用==接线员。这个equals方法是Object,并且应该被类重写,这些类将以某种方式进行比较。

慕桂英4014372

如果字符串不是内部的,那么=检查引用标识。用途: "231".equals(parts[0]);相反。

慕村225694

以下打印出“真”字;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()比较字符串(对于这种情况)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java