Java 解惑 (陈昊鹏 译)
需积分: 0 152 浏览量
更新于2013-08-19
收藏 1.34MB PDF 举报
Java解惑,是一本以大量java实例,讲述如何在程序中避免程序缺陷和程序陷阱的,解惑的过程中,介绍了一些Java编程语言中许多不易被掌握的知识点,其阅读价值非常高,适合具有Java知识的学习者和有编程经验的Java程序员阅读。
Java是一门广泛使用的编程语言,它拥有大量的库和类,能够帮助开发者快速地构建各种应用程序。然而,即使是有经验的Java程序员也可能会在特定的编程场景下遇到一些难以理解的问题和陷阱。《Java解惑》这本书通过实例深入讲解了Java编程中一些容易被忽略的知识点,帮助读者避免在编程中犯错。
书中提到了两个具体的实例,通过这两个实例,我们可以学习到Java中关于整数运算和浮点数表示方面的知识。
第一个实例是关于如何正确判断一个整数是否为奇数的问题。在Java中,取余运算符(%)通常用于判断一个数是否能被另一个数整除。但当我们用它来判断奇偶性时,如果操作数是负数,情况就会变得复杂。在Java中,取余运算的结果将与左侧操作数具有相同的符号。因此,当`i`是一个负数时,`i % 2` 的结果是 `-1` 而不是 `1`。因此,原本的代码`return i % 2 == 1;`并不适用于判断负数的奇偶性。为了修正这个问题,我们需要将表达式改为`return i % 2 != 0;`。这样做,无论`i`是正数还是负数,都可以正确判断其奇偶性。对于性能敏感的应用,还可以使用位操作符`&`来替代取余操作符,这样能提高程序的执行效率。
第二个实例是关于浮点数运算和表示的问题。在很多情况下,尤其是在金融相关的计算中,我们希望得到精确的小数结果。然而,由于计算机是以二进制形式存储数字的,这意味着某些十进制小数无法用有限的二进制位精确表示。在Java中,`double`类型的数字可能会因为二进制表示的限制而产生不精确的结果。在上述找零的案例中,尽管数学上2.00减去1.10的结果应该是0.90,但由于1.10在二进制中的表示不精确,导致最终的计算结果是0.***。为了在输出时获得期望的结果,可以使用`printf`方法来控制输出格式,但这并不解决问题的本质。正确的做法是使用`BigDecimal`类来处理货币计算,因为它能以任意精度进行数值计算,避免了二进制浮点数带来的精度问题。
这两个实例涉及到了Java编程中的两个重要概念:整数运算和浮点数精度问题。这些问题不仅仅出现在Java语言中,其他编程语言也可能遇到类似的问题。通过对这些实例的学习,我们可以了解到,在编写涉及整数和浮点数的程序时,需要特别留意取余运算符的行为以及浮点数的表示方式。对于关键的应用,我们应该选用适合的数据类型和方法来确保程序的正确性和精确性。例如,对于需要高精度计算的场合,应当使用`BigDecimal`类或`BigInteger`类,而在编写一般的业务逻辑代码时,则应留意数据类型的边界情况和操作符的特性,以避免可能的计算误差。
@孙星
- 粉丝: 0
- 资源: 35
最新资源
- 基于fpga的交通灯设计,要求:A通道绿灯亮30S,黄灯亮5S,左拐灯亮15S,黄灯亮5S,这个过程中B通道一直亮红灯,之后A通道亮红灯,B通道绿灯亮40S,之后黄灯亮5S,之后左拐灯亮15S,之后黄
- 基于阶梯碳交易成本的含电转气-碳捕集(P2G-CCS)耦合的综合能源系统低碳经济优化调度,采用(Matlab+Yalmip+Cplex) 考虑P2G设备、碳捕集电厂、风电机组、光伏机组、CHP机组、燃
- 计及阶梯碳交易成本+多元储能(电储能、氢储能、气储能、热储能)+综合能源系统IES联合低碳优化调度(用Matlab+Yalmip+Cplex) 考虑机组和设备:热电联产机组、燃气机组、甲烷反应生成设备
- (OC)多代理实现 运行看效果
- visual basic 6 安装光盘文件
- 双碳+24小时分时综合能源系统低碳优化调度(用Matlab+Yalmip+Cplex) 包含新能源消纳、热电联产、电锅炉、储能电池、天然气、碳捕集CCS、计及碳交易市场等综合元素,实现系统总运行成本最
- 基恩士KV5500程序 基恩士KV5500,威伦通触摸屏,搭载KL-N20V.远程IO模块,KV-MC02V凸轮定位模块,KV-L2*V串行通信模块 全自动锂电池注液机 伺服轴进行位置控制,等
- 电力系统(30节点)机组组合优化调度 基于Matlab、yalmip、cpelx求解最优 针对机组组合问题,提出一种混合整数线性模型,相比传统方法,采用二进制变量和约束,节省计算时间优化收敛速度 为
- 基于门控循环单元GRU做多个特征变量输入,单个因变量输出的拟合预测建模 程序内注释详细,可学习性强 程序直接替数据就可以使用,不会替数据的可以免费指导替数据 程序语言是matlab的,需求版本是
- 图像处理领域的频域处理和复原:运动模糊和失焦模糊修复研究
- dmidecode-3.6
- 多目标遗传算法电力系统系统分布式电源选址定容(matlab程序) 基于IEEE14节点的电力系统多目标优化的遗传算法分布式电源选址定容 对于网损、容量和、电压稳定值的目标优化出来的选址定容 分为有DG
- Simulink 车用永磁同步电机弱磁控制 基于矢量控制 FOC
- GAPSO-LSTM,遗传粒子群优化算法来优化LSTM网络做预测,预测精度高于普通的PSO-LSTM 这里把遗传算法跟粒子群优化算法结合,指的不是用遗传算法来优化PSO的参数,而是解决PSO的容易收
- matlab实现PID控制四旋翼无人机综述模型-PID-四旋翼无人机-matlab
- 2024后台组保姆级学习路线.pdf