整型
计算机存储的都是补码,正数的原码 补码 是相同的,负数不同,负数反码为除符号位的其它位数取反,补码为反码加一。源码0有两种表示,补码只有一种,约定多出来的一种表示最小的负数。
int 类型:4个字节,取值范围为[-2^31, 2^31-1]
long类型:8字节
short类型:2字节
byte类型:1字节
float类型:4字节,默认0.0f
double类型:8字节,默认0.0d
char类型:2字节,unicode字符
boolean类型:1bit
浮点型
不要用浮点型做精确的计算
不要用浮点型作为循环变量
浮点型判断相等不要用==,应当使用 Math.abs(foo - bar) < EPSILON, EPSILON = 1e-6f 或者 1e-6d
精确计算是不要使用double,float,推荐使用int、long、BigDecimal
包装类型
一般情况基本类型优于包装类型,如做累加操作时应当避免自动拆箱装箱带来的额外开销。
整数型的包装类型用equals做大小判断,但是浮点型的类型不能使用equals或者compareTo做相等判断,大小是可以的。
Integer类型,使用字面量和Integer.valueOf()创建的对象在[-128, 127] 是共享的。
自动装箱:把一个基本类型变量直接赋给对应的包装类变量,或者直接赋给Object对象。
自动拆箱:直接把包装类直接赋给一个对应的基本类型变量。
包装类可以实现基本类型变量和字符串之间的转换,如Integer.parseInt(str)。
基本数据类型与包装类实例的数值可以直接进行比较。
两个包装类的实例进行比较,需要看数值是否在-128~127之间。
所有的包装类都提供了静态的compare方法来比较两个基本类型的大小。