Java编程:数值表达式中的陷阱与解决策略

需积分: 3 2 下载量 189 浏览量 更新于2024-07-26 收藏 52KB DOCX 举报
"本文内容摘自《Java解惑》一书,探讨了Java编程中的一些常见问题和误解,包括奇偶判断、小数精确计算以及整数相乘可能的溢出问题。" 在Java编程中,我们经常遇到一些看似简单但实际上容易出错的问题。以下是《Java解惑》中提到的三个关键知识点: 1. 奇偶判断:在Java中,判断一个数是否为奇数时,避免使用`i % 2 == 1`,因为当`i`为负奇数时,这个条件不成立。推荐使用`i % 2 != 0`或者更为高效的`(i & 1) != 0`来判断。这里的位运算符`&`用于按位与,当`i`为奇数时,`i & 1`的结果为1,否则为0。 2. 小数精确计算:在Java中,浮点数(如`double`)不能保证精确表示所有小数,这可能导致计算结果出现意外的误差。例如,`2.00 - 1.10`并不等于`0.9`。为解决这个问题,可以使用整数表示货币,如将金额转换为分进行计算,或者使用`BigDecimal`类进行高精度计算。使用`BigDecimal`时,务必通过字符串构造,避免使用`BigDecimal(double)`,因为这会丢失精度。例如,`new BigDecimal("2.0").subtract(new BigDecimal("1.10"))`将得到精确的`0.9`。 3. 整数相乘溢出:当计算大整数乘法,特别是涉及到时间或计数等场景时,需要注意整数溢出问题。例如,计算一天的微秒数`24 * 60 * 60 * 1000 * 1000`可能会超出`int`类型的范围。为了避免溢出,可以使用`long`类型来存储结果,或者在计算过程中使用`long`类型进行中间运算。 理解这些知识点对于编写健壮且精确的Java代码至关重要。在实际开发中,尤其处理数学运算、货币计算和时间计算时,应当特别注意这些潜在的问题。通过使用适当的逻辑和数据类型,我们可以确保程序的正确性和可靠性。如果想要深入研究这些问题,可以进一步阅读《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程序员阅读。 上传理由:精品典藏共享,网络上下载该资源太费劲,我来共享吧 因为是精品所以分数也比较高。 ***********************************