Java对象相等方法和布尔值

Java Object equal method and Boolean value

我有以下代码片段

  format(Object obj) {
    if(obj.equals("false")) {
      buffer.append("No");
    } else {
      buffer.append("Yes");
    }
  }

调试时,我验证obj变量的值是一个值为“false”的布尔对象,但if子句总是转到Yes指令。你能帮我理解为什么吗?

当您 运行 obj.equals("false") 尝试比较 objBoolean"false" 时,String ].

所以你可以尝试先将Boolean转换成字符串:

if(obj.toString().equals("false")){
    buffer.append("No");
} else {
    buffer.append("Yes");
}

或者,更好的是,正如@Nexevis 所建议的,您可以将 obj 直接与 Boolean:

进行比较
if(obj.equals(false)){
    buffer.append("No");
} else {
    buffer.append("Yes");
}