Java编程揭秘:面试题与奇数判定误区

需积分: 0 2 下载量 63 浏览量 更新于2024-10-03 收藏 1.37MB PDF 举报
"Java解惑PDF深入探讨了Java编程语言的一些鲜为人知的知识点,特别是关于Java语法的详细剖析。书中涵盖了丰富的面试题库,其中重点讲解了一个经典谜题——判断一个整数是否为奇数的函数。原始代码`public static boolean isOdd(int i) { return i % 2 == 1; }`看似符合逻辑,但实际上存在缺陷,因为Java的取模运算符(%)对于负数的处理并不直观。当输入负奇数时,`i % 2`的结果会变成-1,导致函数返回错误答案。 问题的关键在于理解取模运算符的特性,即它在处理负数时,如果结果是非零,则结果的符号与左操作数相同。因此,对于判断奇偶性,正确的实现应该是检查`i % 2`是否不等于0,而不是等于1,即`public static boolean isOdd(int i) { return i % 2 != 0;}`。如果对性能有高要求,可以考虑使用位操作符AND(&)来优化,如`public static boolean isOdd(int i) { return (i & 1) != 0;}`,因为位操作通常比取模运算更快。 这本书不仅提供了这样的深入解析,还强调了在实际编程中要注意运算符行为的细节,尤其是在处理负数和边界条件时。作者鼓励读者在使用这些运算符时,不仅要关注它们的数学定义,还要考虑它们在Java中的实际应用和可能带来的潜在问题。通过阅读和解决此类谜题,读者可以提升对Java语言的理解和编程技巧。"