八种基本类型
- char
- byte
- short
- int
- long
- float
- double
- boolean
整型中byte,short,int,long的取值范围
- byte:取值范围为(-128~127),占用1个字节(-2的7次方到2的7次方-1)
- short:取值范围为(-32768~32767),占用2个字节(-2的15次方到2的15次方-1)
- int:取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1)
- long:取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1)
什么是浮点型?
简单说就是表示带有小数的数据,与之相对的是整型,也就是只能保存整数。
什么是单精度和双精度?
单精度和双精度精确的范围不一样,单精度,也即(float),一般在计算机中存储占用4字节,32位,有效位数为7位;双精度(double)在计算机中存储占用8字节,64位,有效位数为16位。
为什么不能用浮点型表示金额?
- 精度丢失问题,float的精度是23位,double精度是63位。在存储或运算过程中,当超出精度时,超出部分会被截掉,由此就会造成误差。对于金额而言,舍去不能表示的部分,损失也就产生了。
- 进制转换误差,从上面我们可以知道,在计算机实际处理和运算过程中,浮点数本质上是以二进制形式存在的。而十进制的0.1在二进制下将是一个无限循环小数,这就会导致误差的出现。
解决这个问题的方法是BigDecimal的类,这个类可以表示任意精度的数字,其原理是:用字符串存储数字,转换为数组来模拟大数,实现两个数组的数学运算并将结果返回。