1. 正常对应类型
2. 相互转化类型
3. 会出现的问题
饿了么技术专家总结之——double与BigDecimal使用姿势
double计算会有精度问题
bigdecimal设置精度(除不尽)
BigDecimal使用详解
是一个对象;可以传入字符串进行构造,就算是double类型也先转成字符串,这样可以避免缺失精度
不推荐将浮点数作为形参传入构造函数
包装类型和基本数据类型
- DTO最好是包装类型,防止数据库返回null的时候直接用其做计算出现NPE错误;
- 并且基础数据类型会设置默认值,不会正确的表示null
- RPC方法返回数据和参数必须用包装类型
- 局部变量用基本数据类型
- 对于所有相同类型的包装类进行比较的时候,都是用equal来进行操作
- Object 的 equals 方法容易抛空指针异常,所以变量要放在前面
基本包装类型都可以自动装箱拆箱
Integer n = 100; // 编译器自动使用Integer.valueOf(int)
int x = n; // 编译器自动使用Integer.intValue()
包装类型提供了很多静态方法:
例如可以将字符串转为int
int x1 = Integer.parseInt("100"); // 100
int x2 = Integer.parseInt("100", 16);
以及静态变量
// boolean只有两个值true/false,其包装类型只需要引用Boolean提供的静态字段:
Boolean t = Boolean.TRUE;
Boolean f = Boolean.FALSE;
// int可表示的最大/最小值:
int max = Integer.MAX_VALUE; // 2147483647
int min = Integer.MIN_VALUE; // -2147483648
// long类型占用的bit和byte数量:
int sizeOfLong = Long.SIZE; // 64 (bits)
int bytesOfLong = Long.BYTES; // 8 (bytes)