数据类型
数据类型包含两种:基本数据类型和引用数据类型
基本类型
Java中一般通过new创建对象并将对象存储在“堆”里,并通过变量引用保存对象的地址,而对于基本类型,需要特殊对待,基本类型不用new来创建变量,而是创建一个并非是引用的“自动”变量。这个变量直接存储的是“值”,并置于堆栈中,因此更加高效
Java会确定每种基本类型所占存储空间的大小,并且这个大小并不会随着机器硬件架构的变化而变化。这也成为了Java比其他大多数语言编写的程序更具移植性的原因之一
1个字节占8bits,所以
表示形式
整数类型四种表示形式:十进制 、八进制 以0开头、二进制 0b或0B开头、十六进制 0x或0X开头
浮点类型两种表示形式:十进制数形式、科学记数法形式
其他
浮点数并非准确的,千万不能用于比较
float单精度类型,尾数精确到7位,double双精度类型,尾数精确到14位
float和double不适合在不容许舍入误差的金融计算领域,如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal
folat类型的数值后面要有一个后缀F或f,没有的默认为double类型,也可以在数值后添加后缀D或者d,明确double类型
高精度数字
Java提供了两个用于高精度计算的类:BigInteger和BigDecimal。这两个类大体上属于“包装器类”的范畴,但两者都没有对应的基本类型
BigInteger可以准确的表示任何大小的整数值,而且不会丢失任何消息
BigDecimal支持任何精度的定点数,例如,可以用它进行精确的货币计算