字符串未在输出中打印

String not getting printed in the output

String r1 = "hello";
String r2 = "hello";
System.out.println("Result: " + r1 == r2);

我试过 运行 这段代码,但我没有在控制台中得到字符串输出。唯一打印的值是 r1==r2 结果,即 false.

这里的问题是我希望输出为“结果:false”,为什么只是打印 false。

我也知道应该使用 .equals,我只是想知道为什么在给定的情况下会出现这样的结果。

如果有人可以指出相关文档并帮助说明为什么会出现这种情况,那就太好了。

确实输出是“false”,因为首先完成串联,所以它是“Result: hello”,然后它与 returns false 的 r2 (“hello”) 进行比较。 这就是您在控制台中看到“false”的原因。

如果你想看到“Result: true”,你需要使用 equals 而不是 ==,因为这就是我们在 java 中比较字符串的方式。请参阅下文 post 以了解差异: How do I compare strings in Java?

如果您真的想使用“==”比较它们,您需要添加方括号,以便在连接之前先进行比较。

    String r1 = "hello";
    String r2 = "hello";
    System.out.println("Result: " + r1 == r2); // output: "false"
    System.out.println("Result: " + r1.equals(r2)); // output: "Result: true"
    System.out.println("Result: " + (r1 == r2)); // output: "Result: true"

因为被处理为

("Result: " + r1 ) == r2

false。之所以这样处理是因为+的优先级高于==.

你还需要做的是获取字符串

System.out.println("Result: " + (r1 == r2));

这会给你 Result: true

要比较 strings 并按您想要的方式打印,您应该使用方法 equals()。像这样:

String r1 = "hello";
String r2 = "hello";
System.out.println("Result: " + r1.equals(r2));