java equals()返回什么

时间:2016-10-16 10:49:59

标签: java equals

我有这段代码:

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

此代码应检查字符串的最后一个字符是否为“;”并且如果不是这样的话,应该添加一个分号,只有它正好相反,如果字符串已经以一个结尾,它会添加一个分号。如果我拿出感叹号,我的代码就可以了。怎么可能,我读了文档,如果两个表达式相等,.equals()应该返回true。我错过了什么吗?感谢

2 个答案:

答案 0 :(得分:1)

如果将这些语句拆分为单独的行,则这样的语句更容易调试。然后你可以使用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 + ";"
  • 快得多

答案 1 :(得分:1)

if(!s.endsWith(";")){
    s = s + ";";
}

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