目录
基本介绍:
Java是一门强类型语言,这就意味着必须为每一个变量声明一种类型。Java为我们提供了八种基本类型(primitive type),其中又分为4种整数类型、2种浮点类型、1种字符类型char;
整数类型
基本数据类型 | 字节数 | 默认值 | 范围 | 包装数据类型 |
---|---|---|---|---|
byte | 1 | 0 | -2^7—2^7-1 | Byte |
short | 2 | 0 | -2^15—2^15-1 | Short |
int | 4 | 0 | -2^31—2^31-1 | Integer |
long | 8 | 0 | -2^63—2^63-1 | Long |
当我们在给long类型赋值时,如果常量超出int类型的表示范围,就需要在数字后面加上后缀L或l,像下面这样就会报错;
之所以要加L或l,是因为数字常量默认为int类型,而上面这个数字很明显已经超出int范围了;
浮点类型
基本数据类型 | 字节数 | 默认值 | 包装数据类型 | 备注 |
---|---|---|---|---|
float | 4 | 0.0f | Float | 数字后加f |
double | 8 | 0.0d | Double |
其中double类型的数值精度是float类型的两倍,所以也被称为双精度类型;
值得注意的是:float类型的数值后面有一个后缀F或f (例如3.14F) ,如果没有后缀的情况下3.14会被默认为double类型,你也可以写成3.14D或3.14d;但是如果你写成下面这样就会报错;
浮点型(float/double) 用来表示浮点数据,实际以指数形式存储,所以和实际值之间有偏差。
1,为 float 类型赋值必须在数字后加 f,否则数字默认被识别为 double 类型,会导致赋值出错。
2,数字基本类型都包含最大最小值常量,如 Integer.MAX_VALUE
和 Integer.MIN_VALUE
.
3,在浮点型有三个特殊数值表示溢出和出错:
POSITIVE_INFINITY
:正无穷大,正数除以 0 可以得到。
NEGATIVE_INFINITY
:负无穷大,负数除以 0 可以得到。
NaN
:非数,零除以 0 可以得到。(两个 NAN 值也不相等)
布尔类型和char类型
基本数据类型 | 字节数 | 默认值 | 包装数据类型 | 备注 |
---|---|---|---|---|
char | 2 | '\u0000‘(或0) | Character | 必须用单引号 |
boolean | 1 | false | Boolean |
自动类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
数据类型转换必须满足如下规则:
-
1. 不能对boolean类型进行类型转换。
-
2. 不能把对象类型转换成不相关类的对象。
-
3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
-
4. 转换过程中可能导致溢出或损失精度,例如:
int i =128; byte b = (byte)i;
因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
-
5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
(int)27.9 == 27;
(int)-45.89f == -45