提示60-61

2022-09-29  本文已影响0人  飞絮搅青冥

第60条:如果需要精确的答案,请避免使用float和double

float和double类型主要是为了科学计算和工程计算而设计的。他们执行二进制浮点运算,这是为了在广泛的数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们并没有提供完全精确的结果,所以不应该被用于需要精确结果的场合,尤其不适合处理货币计算。

思考

我们系统中在这个方面倒是做的不错,基本很少看到float和double,一般都是BigDecimal。幸好我们系统不需要处理特别复杂的计算,一般情况下都不需要特别在意这一点点开销,不过如果使用int或者long就能达到目的还是会比直接用BigDecimal更好,而且BigDecimal需要特别重视输出时候的格式,其中setScale,toPlainString等方法比较好用。

第61条:基本类型优先于装箱类型

基本类型和装箱类型的区别:
1.基本类型只有值,而装箱类型则具有与它们的值不同的同一性。
2.当在一项操作中混合使用基本类型和装箱基本类型时,装箱基本类型就会自动拆箱,如果装箱类型是null,会抛出空指针。
3.装箱拆箱存在性能损耗。

思考

由于装箱类型即使函数值一致,引用不一样也会认为不相等,所以装箱类型不要使用==来判断是否相等。我们平时遇到对象也要多习惯使用equals方法来比较,而且对象的equals方法还可能被重写,可能有自己特殊的实现,这一点需要多注意。装箱类型多了一个null值,这一点经常导致NPE的问题,我们平时写代码的时候需要多加注意,否则一不留神,java就会用报错来提醒你。只有程序中混用基本类型和装箱类型,并且存在大量计算导致频繁自动装箱和拆箱,会导致性能变差。我们系统中一般不存在这种情况,但是编写代码的时候我们还是要多注意。

上一篇下一篇

猜你喜欢

热点阅读