1.基本数据类型:四个整型(byte,short,int,long);二个浮点型(float,double);一个字符型(char);一个布尔型(boolean)
位数 有无符号位 最小值 最大值 默认值 byte 8 有 -128 127 0 short 16 有 -2^15 2^15-1 0 int 32 有 -2^31 2^31-1 0 long 64 有 -2^63 2^63-1 0L float 32 0.0f double 64 0.0 char 16 \u0000(0) \uffff(65535) boolean 1 false
double是浮点型的默认类型。,每个基本数据类型都对应一个对象版本:byte->Byte,short->Short,int->Integer,long->Long,float->Float,double->Double,char->Character,boolean->Boolean。每一个数据类型的位数和最大值最小值都可以通过对应对象的方法来获取:
Integer.SIZE是int型占用的位数,Integer.MIN_VALUE、Integer.MAX_VALUE分别表示int型的最小、最大值。boolean没有最大最小值,只有true和false两个值。
2.数据类型转换:在数学计算时如果运算符两侧的数据类型不相等就会进行数据类型转换。转换一般遵循以下规律(+,-,*,/):
如果运算符两侧n、m有一个是double类型的,那么另一个将会转换为double类型,如果不满足则按下面的规则;
如果运算符两侧n、m有一个是float类型的,那么另一个将会转换为float类型,如果不满足则按下面的规则;
如果运算符两侧n、m有一个是long类型的,那么另一个将会转换为long类型,如果不满足则按下面的规则;
n和m都转换为int类型进行计算;
上图中实线箭头表示转换时无数据丢失;虚线箭头表示转换时可能出现数据丢失。(强转一般会导致数据丢失)
例:short s1 = 1; s1 = s1 + 1; ->错误,后面那个1是int类型,(s1+1)也会自动转成int类型,要想赋值给short类型需要强转:
s1 = (short)(s1 + 1);
float f = 3.4; ->错误,默认的浮点型为double,所以应该是float f = 3.4f or float f = (float)3.4;
3.浮点型保留位数:使用DecimalFormat类对浮点型数据进行保留位数的操作(四舍五入)。
float f = 3.1415926f;
DecimalFormat d = new DecimalFormat("0.000");
syso(d.format(f));