java println("a==b"+"is"+a==b) 打印 false 而不是 "a==b is true"

发布于 2024-10-16 00:36:18 字数 417 浏览 7 评论 0 原文

可能的重复:
打印字符串比较结果时出现奇怪的输出

大家好,

System.out.println() 的行为以不同的方式使用字符串。 任何人都可以解释为什么

请参阅下面的代码片段,

String a ="hello"
String b ="hello"

System.out.println("a==b"+"is"+a==b)

我希望它打印 'a==b is true',但它只打印 false,我不知道为什么。

Possible Duplicates:
Getting strange output when printing result of a string comparison

Hi all,

System.out.println() behaving in a different way with strings.
Can any one explain why

See the below code snippet

String a ="hello"
String b ="hello"

System.out.println("a==b"+"is"+a==b)

I expect this to print 'a==b is true', but it just prints false and I dont know why.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

只是我以为 2024-10-23 00:36:18

打印一个 false 是因为您没有对布尔表达式进行分组。

表达式:

"a==b"+"is"+a==b

进行评估

("a==b"+"is"+a) == (b)

在您希望它执行字符串连接时

"a==b"+"is"+ (a==b)

:也就是说,您不应该使用 == 来比较字符串,正如其他人指出的那样。

A single false is printed because you didn't group your boolean expression.

The expression:

"a==b"+"is"+a==b

is evaluated as

("a==b"+"is"+a) == (b)

while you wanted it to do a string concatenation:

"a==b"+"is"+ (a==b)

That said, you shouldn't compare strings using ==, as others pointed out.

烂人 2024-10-23 00:36:18

问题不在于 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

感性不性感 2024-10-23 00:36:18

这可能是因为它将 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文