Java核心技术 卷1 基础知识 - lichuncen/lichuncen.github.io GitHub Wiki
1.2.7 可移植性
与 C 和 C++ 不同, Java 规范中没有“ 依赖具体实现” 的地方。基本教据类型的 大小以及有关运算都做了明确的说明。
很多 Intel处理器计算x*y,并且将结果存儲在80位的寄存器中,再除以z并将结果截断为64位。这样可以得到一个更加精确的计算结果,并且还能够避免产生指数溢出。但是,这个结果可能与始终在64位机器上计算的结罘不一样。因此,Java虚拟机最初规范规定所有的中间计算都必须进行截断。这种行为遭到了数值计算团体的反对。
截断计算不仅可能导致溢岀,而且由于戳断操作需要消耗时间,所以在计算速度上实上要比精确计算慢。为此,Java程序设计语言承认了最优性能与理想结果之间存在的冲突,并给予了改进。在默认情况下,虚拟机设计者允许对中间计算结果采用扩展的精度。但是,对于使用 strictfp关键宇标记的方法必须使用严格的浮点计算来生成可再生的结果。
空串""是长度为0的字符串,可以调用方法,比如Length();null串不能调用方法。