java 等于什么() return

What does java equals() return

我有这个代码:

if(!((s.substring(s.length() - 1)).equals(";"))){
    s = s + ";";
}

此代码应检查字符串的最后一个字符是否为“;”如果不是这种情况,应该向它添加一个分号,只是它做的恰恰相反,如果字符串已经以一个结尾,它会添加一个分号。如果我去掉感叹号,我的代码就可以工作。这怎么可能,我阅读了文档,如果两个表达式相等,.equals() 应该 return 为真。我错过了什么吗?谢谢

如果将此类语句分解成单独的行,则调试起来会容易得多。然后您可以使用 Eclipse 或其他 IDE 中的调试器,或者对于旧式调试,您可以记录或打印每行语句以显示哪些变量是或不是

int len = s.length();
// Log or print value of `len`
String sub = s.substring(len - 1);
// Log or print value of `sub`
boolean endsSemiColon = sub.equals(";");
// Log or print value of `endsSemiColon`
if(!endsSemiColon) {
    s = s + ";";
}

PS:

  • 正如 tkausl 所说,这项工作最好用 s.endsWith(";")
  • s = s.concat(";")s = s + ";"
  • 快得多
if(!s.endsWith(";")){
    s = s + ";";
}

if(s.charAt(s.length()-1) != ';'){
    s = s + ";";
}