二、8 种基本数据类型
(一)8 种基本类型分 4 类
1.整数类型 4 种
日常场景选 int
超过 21 亿用 long
short 基本不用
byte:读写二进制数据、IO 流
| 类型 | 占用存储空间 | 范围 | 举例 |
|---|---|---|---|
| byte | 1 B | -128 ~ +127 | private byte age;员工年龄 0-100,够。 |
| short | 2 B | -215 ~ 215 - 1(-32768 ~ +32767) | private short yearsWork; 工作年限 |
| int | 4 B | -231 ~ 231 - 1(-21 亿 ~ +21 亿) | private int officeId; 工位号 |
| long | 8 B | -263 ~ 263 - 1(-9e18 ~ +9e18,足够员工 ID/雪花 ID/身份证 18 位) | private long id; 员工编号/雪花 ID,工号绝对不能用 int,3 年 2147483647L 溢出负号 |
2.小数类型 2 种
绝大多数情况下用 double,java 的浮点型默认是 double。
用 double 发工资,结果 25000.10+0.20=25000.300000000003 少 1 厘被财务骂
Java 的浮点常量默认为 double,申明 float 后面加'f'或'F'。
| 类型 | 占用存储空间 | 范围 / 精度 |
|---|---|---|
| float | 4 B IEEE754 | ±3.4 × 1038(有效数字 6~7 位) |
| double | 8 B IEEE754 | ±1.8 × 10308(有效数字 15~16 位)JVM 默认浮点类型 0.1 → double |
3.布尔类型
| 类型 | 占用存储空间 | 范围 / 精度 |
|---|---|---|
| boolean | 逻辑 1 bit(实际 JVM 实现 1B / 4B) | 只有 true / false 两值 |
4.字符类型
| 类型 | 占用存储空间 | 范围 / 精度 |
|---|---|---|
| char | 2 B(UTF-16) | \u0000 ~ \uFFFF(0~65535,Unicode BMP 平面,能存中文单个 '男'/'女')private char gender; 存性别;不能存 emoji 4 字节扩展区 → 用 String |
二、数据库与 Java 实体类的对应关系
| 数据库 | Java | 范围 |
|---|---|---|
| TINYINT | byte | -128 ~ +127 |
| SMALLINT | short | -215 ~ 215 - 1 |
| INT | int | -231 ~ 231 - 1 |
| BIGINT | long | -263 ~ 263 - 1 |
| FLOAT | float | |
| DOUBLE | double | |
| DECIMAL(M,D) | BigDecimal | DECIMAL(M,D) 的含义: M:总位数(整数位 + 小数位),最大 65 D:小数位数,最大 30 |
| 数据库 | Java | 范围 |
|---|---|---|
| VARCHAR(N) | String | |
| CHAR(N) | String | |
| TEXT | String | |
| DATE | LocalDate | |
| TIME | LocalTime | |
| DATETIME | LocalDateTime | 推荐,范围 1000-9999 年 |
| TIMESTAMP | LocalDateTime | 不推荐,2038 年溢出 + 自动时区转换 |
| YEAR | Integer |
| 数据库 | Java | 范围 |
|---|---|---|
BOOLEAN | Boolean | |
| TINYINT(1) | Boolean | |
