一、JAVA的基本数据类型
1、整型: byte 1
short 2
int 4
long 8
(1)后边的数字代表占得字节数。
(2)默认整型为int。
2、浮点型:
float : 单精度 4
double: 双精度 8
(1)默认浮点型为double。
3、字符型:
char: 2
4、布尔型:
boolean 1
二、数据类型之间的转换
1、默认转换:
(1) byte、short、char之间不进行转换
(2) 从小到大转换:byte、short、char->int->long->float->double
(3)boolean不参与数据类型之间的转换
2、强制转换:
(1)从大到小转换:double->float->long->int->char、short、byte
(2)一般不建议使用强制转换,因为强制转换可能损失精度
(3)强制转换溢出
例:byte a = (byte)130;
由于byte类型的表示范围是-128~127,而130不在这个范围之内,程序又进行了强制转换,相当于只截取了130二进制数的后八位,
在计算机中存储的是数据的补码,而我们看到的是原码,所以需要将补码转换为原码才能得到结果。
原码、补码、反码之间的转换:
a:它们表示的都是有符号为的数。
b:正数的原码、补码、反码是一样的。
c:负数:符号为固定为1
有原码转为补码:符号为不变,其他位取反,得到反码,给反码加1,得到补码。
三、数据之间的运算
(1)常量运算:在编译时运算赋值;
例: byte b1;
b1 = 1+2;
在计算机里面存储是直接是 b1 = 3;
变量运算:在运行时运算赋值。
例: byte b1=1,b2=2,b3;
b3 = b1+b2;
在计算机里存储是: b3 = b1+b2;
(2)不同类型数据之间运算,先默认转换类型,再运算。
例:byte a = 1,b ;
int c = 2,d;
d = a+c;
在进行运算前,计算机先将a默认转换为int类型的,然后再和c相加。
b = a+c;
在编译时期就会报错,提示有可能损失精度。
(3) byte a=1,b=2,c;
c = a+b;
在编译时也会报错,原因是计算机 先默认将a和b转换为int类型,然后相加,赋值给c,而c确实byte类型的,所以编译时会报错。