java spring string equals return false 当它们在打印时看起来相同

jave spring string equals return false when they seem to be the same when printing

我正在使用 java spring 为网站开发一个 eclipse 项目。但是,无论我尝试什么,下面的字符串似乎都不一样。如果有人能告诉我该怎么做就太好了。

@RequestMapping(value = "/result", method = RequestMethod.GET)
    public ModelAndView execute(@ModelAttribute("dummyForm") final DummyForm dummyForm, final Model model) {
        // ...
        final String str = dummyForm.getFirstName() + "_" + dummyForm.getLastName();
        if(str.equals("Dummy_Smith")){
            // ...
        }
        return mav;
    }

使用此代码,当我使用 dummyForm.setFirstName("Dummy") 和 dummyForm.setLastName("Smith") 进行测试时: 在 jsp 中打印 "str" 将按预期显示 "Dummy_Smith"。但是在 if 条件检查中,它总是 returns false。 我尝试做 str.compareTo("Dummy_Smith"),它 returns -33。 想要return true 怎么办?

提前致谢。

我敢打赌,字符串中要么有空格,要么有不可见字符,因此当您打印时,它们看起来像是同一个字符串,但实际上它们并不相同。尝试 trim 从你比较的字符串中去掉任何空格,看看它是什么 returns:

String trimmed = str.trim();
System.out.println(trimmed);
System.out.println(trimmed.compareTo("Dummy_Smith"));

来自 compareTo 调用的 true 值是否等于 0(因此上面的第二个打印行)。