在此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常规那样使用条件编译,但是在某些情况下(例如调试,尤其是向后二进制兼容性),需要允许编译器完全剥离代码,因此特定的结构为此被允许。