当前位置: 首页 > 面试题库 >

if(boolean == false)vs. if(!boolean)

万俟渊
2023-03-14
问题内容

在此NotePadProvider示例代码中,我注意到作者选择了以下形式:

    if (values.containsKey(NoteColumns.CREATED_DATE) == false) {
        values.put(NoteColumns.CREATED_DATE, now);
    }

过度:

    if (!values.containsKey(NoteColumns.CREATED_DATE)) {
        values.put(NoteColumns.CREATED_DATE, now);
    }

第一种形式比更具逻辑性的形式有什么优势吗?


问题答案:

除了“可读性”之外,没有。它们在功能上是等效的。

(“可读性”用引号引起来,因为我讨厌== false并且发现!它更具可读性。但是其他人则不然。)



 类似资料:
  • 我遇到了这样的语法: 这个有两个点的语法是什么:call? 在哪里可以找到有关它的信息? 它只适用于布尔值,还是以其他不同的方式实现?

  • 问题内容: 来自javascript类型的jQuery文档中的这段代码片段描述了转换为布尔值时字符串的行为(该主题与该问题无关,但这只是我找到代码的地方): 我得到了前三个示例,但没有得到最后一个示例,因为: 所以我假设: 但反而: 我什至不知道这是什么… 是因为: 如果是这样,这有什么目的? 问题答案: 返回一个不为null 的 对象 。非空对象始终是真实的。 结果,任何非null对象将始终为f

  • 为什么以下输出为True? 这将始终输出,即使条件似乎表明并非如此。如果我删除括号,那么它可以工作,但我不明白为什么。

  • 描述 (Description) java.lang.Boolean.valueOf(boolean b)返回表示指定布尔值的Boolean实例。 如果指定的布尔值为true,则此方法返回Boolean.TRUE; 如果为false,则此方法返回Boolean.FALSE。 如果不需要新的Boolean实例,则通常应优先使用此方法,而不是构造函数Boolean(boolean),因为此方法可能会产

  • 问题内容: 我在Eclipse中尝试了以下方法: :警告“死代码” :编译错误“无法访问的代码” 我想知道这种差异是否存在真正的“原因”。我已经找到了… …但是为什么不允许相同的调试目的? 问题答案: 在上可达代码JLS部分解释了理由。本质上,Java通常不应该像C常规那样使用条件编译,但是在某些情况下(例如调试,尤其是向后二进制兼容性),需要允许编译器完全剥离代码,因此特定的结构为此被允许。