在《java编程思想》一书中说到:(几乎)一切都是对象。那么说就是存在特例:基本数据类型
1.基本数据类型(8种)
基本类型 | 所属类型 | 大小 | 取值范围 |
---|---|---|---|
boolean(布尔类型) | true/false | / | / |
char(字符型) | 单字符型 | 16-bit | Unicode 0 ~ Unicode 2^16-1 |
byte (字节型) | 整数类型 | 8-bit | -128 ~ +127 |
short (短整型 ) | 整数类型 | 16-bit | -2^15 ~ +2^15-1 |
int (整型 ) | 整数类型 | 32-bit | -2^31 ~ +2^31-1 |
long (长整型 ) | 整数类型 | 64-bit | -2^63 ~ +2^63-1 |
float(浮点型) | 小数类型 | 32-bit | IEEE754 ~ IEEE754 |
double(双精度型) | 小数类型 | 64-bit | IEEE754 ~ IEEE754 |
总结:
1) 4种整数类型,2种小数类型,1个是字符型,1个是布尔型。
2) 基本数据类型(存储的是值)---占用的空间大小,取决于它的位数;
引用数据类型类型(存储的是地址);
3) 类型转换:(低级向高级) 自动转换,又称扩展转换
(高级向低级) 强制转换,又称窄化转换
《java编程思想》说到,窄化转换有时会出现信息丢失问题:将float或double类型转换为整型值时,总是对该数字进行截尾,如果需要得到舍入的结果,就必须使用java.lang.Math的round()方法;
2.基本类型的包装器类型:
基本类型可以自动转换为包装器类型(自动包装) ;包装器类型也可以自动转换为基本类型(自动拆箱);
3. 高精度数字
1) BigInteger
2) BigDecimal
BigInteger 支持任意精度的整数,也就是说可以表示任何大小的整数值,而不会丢失信息。
BigDecimal 支持任意精度的定点数,可以用来进行精确的货币计算。