1.取值范围
1.1整形的取值范围:
类型 | 字节 | 二进制取值范围 | 十进制取值范围 |
byte | 1字节 | -2 ^ 7 ~ 2 ^ 7- 1 | -128 ~127 |
short | 2字节 | -2 ^ 15 ~ 2 ^ 15- 1 | -32768 ~ 32767 |
int | 4字节 | -2 ^ 31 ~ 2 ^ 31- 1 | -2147483648 ~ 2147483647 |
long | 8字节 | -2 ^ 63~ 2 ^ 63- 1 | -9223372036854775808 ~9223372036854775807 |
1.2.浮点型的取值范围:
类型 | 字节 | 负数取值范围 | 正数取值范围 |
float | 4字节 | -3.4E + 38 ~ -1.4E-45 | 1.4E-45 ~ 3.4E+38 |
double | 8字节 | -1..7E + 308 ~ -4.9E-324 | 4.9E-324 ~ 1.7E + 308 |
1.3布尔类型的取值范围:
类型 | 字节 | 取值范围 | 描述 |
boolean | 1字节 | true/false | 仅可描述真或假 |
1.4字符类型的取值范围:
类型 | 字节 | 取值范围 | 字符编码 |
char | 2字节 | 0 ~65535 | Unicode字符集(万国码) |
2.类型的提升与转换
2.1:自动类型转换
这一类转换需要满足以下条件:
1.两种类型相互兼容。
2. 目标类型大于源类型。
3. Int 与 char可以互相转换。
这种类型的转换是系统自动转换的,不会丢失数据。int与char 可以互相转换是因为char类型的数据在计算机中是以Unicode(万国码)的方式进行转换,当然要使用\u转义字符表示为万国码编码。
另外英文字符可以直接使用十进制的方式转换。
2.2:强制类型的转换:
1. 把取值范围大的强制转换为小的。
2.两种类型相互兼容。
3.目标类型小于源类型。
4.强制转换容易出现数据丢失,如double的小数被丢失
这种类型的转换是强制的,语法格式为:(int)i;
2.3:类型的自动提升:
在算术运算时:
1.两个操作数有一个为double,计算结果提升为double。
2.如果操作数中没有double,有一个为float,计算结果提升为float。
3.如果操作数中没有float,有一个为long,计算结果提升为long。
4.如果操作数中没有long,有一个为int,计算结果提升为int。
5.如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。