概述
简单类型 | boolean | byte | char | short | int | long | float | double | void |
---|---|---|---|---|---|---|---|---|---|
二进制位数 | 1 | 8 | 16 | 16 | 32 | 64 | 32 | 64 | – |
封装器类 | Boolean | Byte | Character | Short | Integer | Long | Float | Double | Void |
注意:
float和double问题:
float、double两种类型的最小值与Float.MIN_VALUE、 Double.MIN_VALUE的值并不相同,实际上Float.MIN_VALUE和Double.MIN_VALUE分别指的是 float和double类型所能表示的最小正数。0到±Float.MIN_VALUE之间的值float类型无法表示,0 到±Double.MIN_VALUE之间的值double类型无法表示,这些范围内的数值超出了它们的精度范围
内存问题:
Java基本类型存储在栈中,因此它们的存取速度要快于存储在堆中的对应包装类的实例对象
各自优势
基本类型的优势:数据存储相对简单,运算效率比较高
包装类的优势:面向对象,会有一些实用方便的方法
其他
Do(数据对象)中定义属性时需要注意:
1)比如与数据库对象一一对应,数据库某列可以为空(null),这个时候,属性定义应该为包装类型的数据类型,因为基本数据类型是有默认值的,比如int默认值是0,和null的含义不同
2)定义的时候,Boolean尽量不用,因为一般布尔类型只有true,false两种含义,但,Boolean会有第三种,null,会导致很多不必要的问题,并由此和第一条的原因,数据库定义boolean类型的时候要设置不可以为空(null)
3)当精度无法确定的情况下可以使用BigDecimal来表示
4)尽量使用valueOf而避免new的内存消耗,但valueOf()方法不要传字符串,字符串用parseXxx