【问题标题】:Java Object equal method and Boolean valueJava Object equal 方法和布尔值
【发布时间】:2021-09-28 22:23:03
【问题描述】:

我有以下代码sn-p

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

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

【问题讨论】:

  • 您是否期望 Boolean.valueOf(false).equals("false") 之类的内容返回 true?您将BooleanString 进行比较...也许您想要obj.toString().equals("false")(或equalsIgnoreCase)。
  • 您正在尝试将StringBoolean 进行比较。这就是为什么你会收到fasle
  • 这能回答你的问题吗? How to compare Boolean?

标签: java object boolean equals


【解决方案1】:

当您运行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");
}

【讨论】:

  • 只使用obj.equals(false) 并与boolean 进行比较而不是将String 用作假布尔值不是更有意义吗?
  • @Nexevis 哦,那就更好了!
猜你喜欢
  • 2013-07-30
  • 2013-05-30
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
相关资源
最近更新 更多