Java解密:奇数性判断误区与修复

需积分: 9 1 下载量 96 浏览量 更新于2024-07-29 收藏 1.19MB PDF 举报
Java解惑(中文)主要探讨了Java编程语言中的几个关键概念和常见问题,特别关注于一个关于判断奇数性的表达式谜题。Java中的`isOdd`方法设计初衷是通过取余运算符 `%` 来确定一个整数是否为奇数,如`public static boolean isOdd(int i) { return i % 2 == 1; }`。然而,这个方法存在一个问题,因为它依赖于对整数取余的特性,而Java的`%`操作符对于负数并不直接适用。 在Java中,取余操作符的定义遵循恒等式`(a/b) * b + (a%b) == a`,这意味着当处理负数时,如果除数为正,余数可能不符合直觉,例如`-5 % 2`会得到-1而不是1。这导致了`isOdd`方法在处理负奇数时错误地返回`false`。为解决这个问题,正确的实现应该是`public static boolean isOdd(int i) { return i % 2 != 0; }`,通过比较余数与0而非1来确保奇数的检测。 对于性能敏感的场景,使用位操作符AND(`&`)替换取余操作符是一个更好的选择,因为位操作通常比浮点运算更快,例如`public static boolean isOdd(int i) { return (i & 1) != 0; }`。这利用了二进制表示中奇数的最低位总是1的事实。 总结来说,理解和应用Java的取余和位操作符是编程中的重要技巧,尤其是在处理数值逻辑时。程序员必须注意这些操作符在不同数域(正负)下的行为差异,以避免潜在的错误。通过适当的修改和优化,我们可以确保代码的准确性和性能。
2011-05-08 上传
********Shenkxiao Resources******** 压缩包密码:shenkxiao 资源:Java解惑(中文版)、java puzzlers traps pitfalls,and Corner Cases 作者:Joshua Bloch Neal Gafter 版本:中文版 主要内容: Java解惑(英文版)—典藏原版书苑 目录 1 introduction 2 expressive puzzlers puzzle 1:oddity puzzle 2:time for a change puzzle 3:long pision puzzle 4:it s elementary puzzle 5:the joy of hex puzzle 6:multicast puzzle 7:swap meat puzzle 8:dos equis puzzle 9:tweedildum puzzle 10:tweedledee 3 przzlers with character puzzle 11:the last laugh puzzle 12:abc puzzle 13:animal farm puzzle 14:escape rout puzzle 15:hello whirled puzzle 16:line printer puzzle 17:huh? puzzle 18:string cheese puzzle 19:classy fire puzzle 20:what s my class? puzzle 21:what s my class,take2 puzzle 22:dupe of url puzzle 23:no pain,no gain 4 loopy puzzlers puzzle 24:a big delight in every byte puzzle 25:inclement increment puzzle 26:in the loop puzzle 27:shifty i s puzzle 28:looper puzzle 29:bride of loper puzzle 30:son of loper puzzle 31:ghost of looper puzzle 32:curse of looper puzzle 33:looer meets the wolfman puzzle 34:down for the count puzzle 35:minute by minute 5 exceptonal puzzlers 6 classy puzzlers 7 library puzzlers 8 classier puzzlers 9 more library puzzlers 10 advanced puzzlers a catalog of traps and pitfalls b notes on the illusions refereces index 本书深入研究Java编程语言及其核心类为的细微之处,特写95个有关Java或其他类库的陷阱和缺陷的谜题,其中大多数谜题都采用短程序的形式给出。在每个谜题之后都有详细的解惑方案,这些方案在给出那些实际行为与表面上迥异的程序行为的简单解释的同时,更向读者展示了如何一劳永逸地避免底层的陷阱与缺陷。本书附录部分列出了陷阱及缺陷的目录,可供读者进一学习参考。 本书以轻松诙谐的语言,寓教于乐的方式,由浅入深、总结归纳Java编程语言的知识点,适合具有Java知识的学习者和有编程经验的Java程序员阅读。 上传理由:精品典藏共享,网络上下载该资源太费劲,我来共享吧 因为是精品所以分数也比较高。 ***********************************