这个问题在这里已经有答案了:
打印字符串比较结果时得到奇怪的输出(3个答案)
字符串等于且==与字符串串联[重复](4个答案)
java string==vs等于在与连接[duplicate]组合时给出true或false(5个答案)
字符串串联和比较在println语句中产生意外结果(5个答案)
在java中,计算为布尔值的表达式不能与字符串串联。为什么[重复](5个答案)
4个月前关门了。
String r1 = "hello";
String r2 = "hello";
System.out.println("Result: " + r1 == r2);
我试着运行这个代码,但在控制台中没有得到字符串输出。打印的唯一值是r1==r2结果,即false。
这里的问题是,我希望输出是“result:false”,为什么false刚刚被打印出来。
我也明白,应该使用equals,我只是想知道为什么在给定的场景中结果是这样。
如果有人能指出相关文档并帮助解释为什么会出现这种行为,那就太好了。
3条答案
按热度按时间myzjeezk1#
因为它被当作
哪个是
false
. 这样处理是因为+
优先级高于==
.你需要做的是得到字符串以及
这会给你
Result: true
4szc88ey2#
比较
strings
并以你想要的方式打印你应该使用的方法equals()
. 这样地:crcmnpdw3#
事实上,输出是“false”,因为首先进行串联,所以它是“result:hello”,然后将其与返回false的r2(“hello”)进行比较。这就是为什么您在控制台中看到“false”。
如果您想看到“result:true”,您需要使用equals而不是==因为这就是我们在java中比较字符串的方式。请参阅下面的文章以了解差异:如何比较java中的字符串?
如果你真的想用“==”来比较它们,你需要加上括号,这样比较会在连接之前先进行。