动手动脑感想

枚举: switch语句支持枚举型,当switch使用int、String类型时,由于值的不稳定性往往会有越界的现象,对于这个的处理往往只能通过if条件筛选以及default模块来处理。而使用枚举型后,在编译期间限定类型,不允许发生越界的情况。当使用常量类时,往往得通过equals去判断两者是否相等,使用枚举的话由于常量值地址唯一,可以用==直接对比,性能会有提高。常量类编译时,是直接把常量的值编译到类的二进制代码里,常量的值在升级中变化后,需要重新编译引用常量的类,因为里面存的是旧值。枚举类编译时,没有把常量值编译到代码里,即使常量的值发生变化,也不会影响引用常量的类。枚举类编译后默认为final class,不允许继承可防止被子类修改。常量类可被继承修改、增加字段等,容易导致父类的不兼容。

数据类型转换:转换从低级到高级

  ------------------------------------>  
byte,short,char—> int —> long—> float —> double

数据类型转换必须满足如下规则:1. 不能对boolean类型进行类型转换。2. 不能把对象类型转换成不相关类的对象。3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。4. 转换过程中可能导致溢出或损失精度。

自动类型转换:必须满足转换前的数据类型的位数要低于转换后的数据类型,例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。

强制类型转换:1.条件是转换的数据类型必须是兼容的。2.格式:(type)value type是要强制类型转换后的数据类型。

精度损失:对于Java的float和double类型,都存在精度损失的问题。
精度损失产生的原因在于Java的数据存储采用的都是2进制形式,二进制不能准确的表示1/10等分数,只能无限趋近。

float的精度损失最严重,然后依次是double,和使用参数类型为double的BigDecimal。使用BigDecimal中参数为String类型的构造方法可以避免精度损失。

 

原文地址:https://www.cnblogs.com/yuanxiaochou/p/9752586.html