1、基本数据类型
1.1 整数类型
整数类型用于存储没有小数部分的数字。 Java 提供了四种精度的整数类型,适用于不同范围的数值。
| 类型 | 关键字 | 内存大小 | 取值范围(十进制示例) | 典型用途 |
|---|---|---|---|---|
| 字节型 | byte | 8位(1字节) | -128 ~ 127 | 处理文件流、网络协议等原始二进制数据 |
| 短整型 | short | 16位(2字节) | -32768 ~ 32767 | 在内存受限的旧系统或某些特殊场景(如图像处理中的像素值) |
| 整型 | int | 32位(4字节) | -2147483648 ~ 2147483647 | 最常用,用于绝大多数整数计数、索引和计算 |
| 长整型 | long | 64位(8字节) | -9223372036854775808 ~ 9223372036854775807 | 处理天文数字、金融超大金额、科学计算中的大整数 |
核心要点:
• 整数默认为 int 类型。若直接写 100、-50 , Java 会将其视为 int 。
• 没有无符号类型。不同于某些编程语言, Java 的整数类型全部为有符号,即包含正负数。
• L 字面量后缀:当你需要显式定义一个 long 型字面量时,必须在数字后加 L 或 l (推荐大写 L ,避免与数字 1 混淆)。
1.2 浮点型
浮点类型用于存储带有小数部分的数值。它们遵循 IEEE 754 标准,通过科学计数法来近似表示实数。
| 类型 | 关键字 | 内存大小 | 精度(有效位数) | 典型取值范围(绝对值范围) |
|---|---|---|---|---|
| 单精度浮点 | float | 32位(4字节) | 约 6~7 位十进制 | ±1.4 x 10(-45) ~ ±3.4 x 10(38) |
| 双精度浮点 | double | 64位(8字节) | 约 15~16 位十进制 | ±4.9 x 10(-324) ~ ±1.8 x 10(308) |
核心要点:
• 浮点数默认为 double 类型。若直接写 3.14 , Java 会将其视为 double ;
• F 字面量后缀:要定义 float 类型字面量,必须在数字后加 F 或 f (推荐大写 F ,风格统一);
• 精度丢失问题:浮点数是近似值,计算时可能出现舍入误差。不要用 float 或 double 进行需要精确计算的金融或货币运算(应使用BigDecimal类)。
1.3 字符型
字符类型 char 用于存储单个 Unicode 字符。
| 类型 | 关键字 | 内存大小 | 表示方式 | 范围 |
|---|---|---|---|---|
| 字符 | char | 16位(2字节) | 单个字符字面量、 Unicode 转义序列、整数 | ‘\u0000’(0) ~ ‘\uffff’(65535) |
核心要点:
• 单引号表示字符。 char letter = ‘A’;
• 转义字符:Java支持特殊字符的转义表示,如 ‘\n’(换行)、‘\t’(制表符)、‘\’(反斜杠) ;
• Unicode 转义:可以直接使用 \u 后面跟四位十六进制数来指定任何 Unicode 字符;
• 字符本质是整数类型: char 底层存储的是该字符在 Unicode 表中 码点(无符号整数),因此可以参与部分整型运算(如加减)。
1.4 布尔型
布尔型用于表示逻辑真(true)或假(false)。它主要用于条件判断和循环控制。
| 类型 | 关键字 | 内存大小 | 取值 |
|---|---|---|---|
| 布尔 | boolean | 未精确定义(通常为 1 位或 1 字节) | true 或 false |
核心要点:
• 只有两个值: true 和 false 。它们不是数字,不能与 0 或 1 等同;
• 严禁与整数相互转换: Java 严格要求类型安全, boolean 不能转换为 int ,反之也不可以 。这避免了某些编程语言中“假作0,真作非0”的模糊逻辑。
2、引用类型(先做了解)
引用类型与基本数据类型不同,它们存储的是对象的引用(内存地址),而不是实际的值。其包括:
2.1 类
最基础、最核心的引用类型,使用 class 关键字定义。
2.2 接口
使用 interface 关键字定义,是行为抽象,不能直接实例化,属于标准引用类型。
2.3 数组
Java 中数组是特殊的对象,属于独立的引用类型(与类、接口平级)。
2.4 枚举
JDK 5 引入,使用 enum 关键字定义;本质是继承自 java.lang.Enum 的特殊类,用于定义固定的常量集合,不可手动实例化,属于引用类型。
2.5 注解
JDK 5 引入,使用 @interface 关键字定义;本质是继承自 java.lang.annotation.Annotation 的特殊接口,属于引用类型。
2.6 记录
JDK 16 正式标准化,使用 record 关键字定义;本质是不可变的特殊类,属于引用类型。