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

可能的重复:
在Java中显式比较布尔常量(例如如果(b == false))是不好的?

在此 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);
    }

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


答案 1

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

(“可读性”在引号中,因为我讨厌==假和发现更具可读性。但其他人没有。


答案 2

主要是可读性。在阅读其他人的代码时,阅读为“不包含密钥”而不是“包含密钥是假的”更直观。!values.containsKey(NoteColumns.CREATED_DATE)(values.containsKey(NoteColumns.CREATED_DATE) == false)