1. 数据类型
大约 2 分钟
概览
- 整型(4)
- 浮点型(2)
- 字符型(1)
- 布尔型(1)
整型(4)
类型 | 占用空间 | 范围 |
---|---|---|
byte | 1byte | -27 ~ 27 |
long | 8byte | -263 ~ 263 |
int | 4byte | -231 ~ 231 |
short | 2byte | -215 ~ 215 |
类型之间可以进行强制类型转换,但是向下类型强转可能会导致精度丢失,当真的需要强转时,一定要提前思考。
相关信息
当真的需要强转,可以采用如下代码来进行判断
public static void main(String[] args) {
long longValue = 1234567890123L; // 一个long值
// 判断是否会导致精度丢失
if (longValue >= Integer.MIN_VALUE && longValue <= Integer.MAX_VALUE) {
// 可以进行转换
int intValue = (int) longValue;
System.out.println("转换后的int值: " + intValue);
} else {
// 会导致精度丢失
System.out.println("转换会导致精度丢失");
}
}
不同进制的写法
JDK7以后的特殊写法:可以添加 _
来让数字更好读
例如:int i = 10_000_000; // 表示1千万
二进制,0B
or 0b
开头
byte b = 0b0000_1110; // 或者 0B00001110; 14
十进制, 直接写
int i = 10_000_000;
十六进制, 0x
开头
int i = 0x1F; // 前面是数字0, 不是字母O, 31
八进制,0
开头,不建议使用
int i = 012; // 前面是数字0, 10
注意
Java没有任何无符号(unsigned)表示方法
浮点型(2)
类型 | 占用空间 | 范围 |
---|---|---|
float | 4byte | -3.40282347E+38F ~ 3.40282347E+38F (有效位数为6~7位) |
double | 8byte | -1.79769313486231570E+308 (有效位数位15位) |
浮点数计算有一个标准叫
IEEE 754
浮点数在平时计算中用得不多,浮点数运算基本全都用BigDecimal来替代了。 在Java中有一个保留关键字,strictfp,是用于计算标准浮点数的,但是在日常生活中极少使用,没有去了解。
char类型(1)
类型 | 占用空间 | 范围 |
---|---|---|
Unicode(默认) | 2byte | 0x0000~0xFFFF |
UTF-8 | 3byte | - |
int bytes = "中国".getBytes().length; // 6
注意
- 最好不要在Java程序中使用char类型,除非确实需要,否则用String类型替代;
- 虽然
$
是合法字符,但是不要在自己的代码中使用,这一般是Java编译器使用的字符;
bool类型(1)
只有true
和false
两个值,占1字节