# Java 八种基本数据类型总结
基本数据类型:byte short int long, double float char boolean
基本数据类型 | 名称 | 类型 | 占用空间 | 取值范围 |
---|---|---|---|---|
byte | 字节 | 有符号整型 | 1字节 | -2^7(-128) <= byte <= 2^7-1(127) |
short | 短整数 | 有符号整型 | 2字节 | -2^15 <= short <= 2^15-1 |
int | 整数 | 有符号整型 | 4字节 | -2^31 <= int <= 2^31-1 |
long | 长整数 | 有符号整型 | 8字节 | -2^63 <= long <= 2^63-1 |
double | 双精度浮点数 | 浮点型 | 8字节 | -2^1024 <= double <= 2^1024 |
float | 浮点数 | 浮点型 | 4字节 | -2^128 <= float <= 2^128 |
char | 字符 | 无符号整型 | 2字节 | 2^0 <= char <= 2^15 |
boolean | 布尔 | 布尔型 | 1字节 | true or false |
基本数据类型注意事项:
1、未带有字符后缀标识的整数默认为int类型;未带有字符后缀标识的浮点数默认为double类型;
2、如果一个整数的值超出了int类型能够表示的范围,则必须增加后缀“L”(不区分大小写,建议用大写,因为小写的L与阿拉伯数字1很容易混淆),表示为long型;
3、带有“F”(不区分大小写)后缀的整数和浮点数都是float类型的;带有“D”(不区分大小写)后缀的整数和浮点数都是double类型的;
4、编译器会在编译期对byte、short、int、long、float、double、char型变量的值进行检查,如果超出了它们的取值范围就会报错;
5、int型值可以赋给所有数值类型的变量;
long型值可以赋给long、float、double类型的变量;
float型值可以赋给float、double类型的变量;
double型值只能赋给double类型变量。
关于取值范围:
java中用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数。
正数补码为其本身;
负数补码为其绝对值各位取反加1。
例如:
+21,其二进制表示形式是00010101,则其补码同样为00010101;
-21,按照概念其绝对值为00010101,各位取反为11101010,再加1为11101011,即-21的二进制表示形式为11101011。
byte的取值范围计算过程:
1、byte为一字节8位,最高位是符号位,即最大值是01111111,因正数的补码是其本身,即此正数为01111111,十进制表示形式为127;
2、最大正数是01111111,那么最小负是10000000(最大的负数是11111111,即-1);
3、10000000是最小负数的补码表示形式,我们把补码计算步骤倒过来 就即可,10000000减1得01111111然后取反10000000。
因为负数的补码是其绝对值取反,即10000000为最小负数的绝对值,而10000000的十进制表示是128,所以最小负数是-128;
4、由此可以得出byte的取值范围是-128到+127。
ps:各个类型取值范围的计算方法与此大致相同,感兴趣的同学可以自己试着计算。