在Java中,一共有8中基本类型,其中4种整型,2种浮点型,1种用于表示Unicode编码的字符单元的字符类型char和1种表示真值的boolean类型。
1.整型
类型 | 存储需求 | 取值范围 |
int | 4字节 | -2147483648~2147483647(正好超21亿) |
short | 2字节 | -32768~32767 |
long | 8字节 | -9223372036854775808~9223372036854775807 |
byte | 1字节 | -128~127 |
int是最常用的,但是一旦取值超过了int的范围,就需要使用long类型。
byte和short类型适用于特定场合,比如处理底层文件或者存储大数组的时候。
从Java7开始,加上前缀0b或是0B就可以写二进制。例如0b1001就是指9。不仅如此,我们还可以为数字字面量加下划线。
例如1_000_000指的就是一百万!Java编译器会自动去除这些下划线。
2.浮点型
类型 | 存储需求 | 取值范围 |
float | 4字节 | 大约±3.40282347E+38F(有效位数为6-7位) |
double | 8字节 | 大约±1.79763913486231570E+308(有效位数为15位) |
绝大多数情况下使用double类型,若需要使用float类型,需要添加后缀F或f。
Java中对于浮点数溢出和出错有三种浮点数值:
(1)正无穷大:正数除以0;对于double,对应Double.POSITIVE_INFINITY;对于float,对应Float.POSITIVE_INFINITY;
(2)负无穷大:负数除以0;对于double,对应Double.NEGATIVE_INFINITY;对于float,对应Float.NEGATIVE_INFINITY;
(3)NaN(不是一个数字):0/0或负数开平方根时都为NaN;对于double,对应Double.NaN;对于float,对应Float.NaN;
3.char
char类型的字面量值要用单引号括起来。可以表示十六进制值,范围从u0000到Uffff。但是需要注意的是:Unicode转义序列会在解析代码之前得到处理。
例如注释://u00A0 is a new line 会产生一个语法错误,因为u00A0会替换成一个换行符!
4.boolean
boolean类型有两个值:true和false。