java println("a==b"+"is"+a==b) 打印 false 而不是 "a==b is true"
可能的重复:
打印字符串比较结果时出现奇怪的输出
大家好,
System.out.println()
的行为以不同的方式使用字符串。
任何人都可以解释为什么
请参阅下面的代码片段,
String a ="hello"
String b ="hello"
System.out.println("a==b"+"is"+a==b)
我希望它打印 'a==b is true'
,但它只打印 false
,我不知道为什么。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
打印一个 false 是因为您没有对布尔表达式进行分组。
表达式:
进行评估
在您希望它执行字符串连接时
:也就是说,您不应该使用
==
来比较字符串,正如其他人指出的那样。A single false is printed because you didn't group your boolean expression.
The expression:
is evaluated as
while you wanted it to do a string concatenation:
That said, you shouldn't compare strings using
==
, as others pointed out.问题不在于 System.out.println();它是与 String 对象与
==
进行比较的东西。使用.equals()
方法比较两个字符串对象。请参阅下面的链接。 字符串对象比较problem is not with System.out.println(); it is something with String objects comparison with
==
. Use.equals()
method for comparing two string objects. Refer the below link. String Object comparison这可能是因为它将 a 和 b 视为不同的对象。当我们像这样创建字符串时,它引用不同的字符串池。
It might be because it is traeting a and b as diffrent objects. When we create Strings like this it refers to diffrent string pools.