【发布时间】:2020-09-07 11:17:45
【问题描述】:
String r1 = "hello";
String r2 = "hello";
System.out.println("Result: " + r1 == r2);
我尝试运行此代码,但在控制台中没有得到字符串输出。打印的唯一值是 r1==r2 结果,即 false。
这里的问题是我期望输出是“结果:假”,为什么只是打印出来的是假。
我也知道应该使用 .equals,我只是想知道为什么在给定的场景中结果是这样的。
如果有人可以指出相关文档并帮助说明为什么会出现这种行为,那就太好了。
【问题讨论】:
-
字符串与 Java 中的 .equals() 进行比较 stackoverflow.com/questions/513832/…
-
@kembytes 但是像这样实例化的两个字符串指向 JVM 字符串池中的同一个位置,因此它“应该”返回“true” - 完整的解释已经作为答案发布
-
这不是
==而不是equals的问题。事实上r1==r2是真的。这是+和==的运算符顺序的问题。字符串"Result: " + r1不等于r2。