一、基本数据类型(Primitive Data Types)
Java 定义了 8 种基本数据类型,它们直接存储数据值,不需要实例化对象。分为以下四类:
1. 整数类型
| 类型 | 大小(字节) | 取值范围 | 默认值 | 示例 |
|---|---|---|---|---|
byte | 1 | -128 ~ 127 | 0 | byte b = 10 |
short | 2 | -32768 ~ 32767 | 0 | short s = 100 |
int | 4 | -2³¹ ~ 2³¹-1(约±21亿) | 0 | int i = 1000 |
long | 8 | -2⁶³ ~ 2⁶³-1 | 0L | long l = 1000000L |
注意:
• long 类型赋值时建议加上 L 后缀(如 100L),否则会被视为 int。
• 整数运算默认使用 int 类型,如 byte 或 short 参与运算时会自动提升为 int。
2. 浮点类型
| 类型 | 大小(字节) | 精度 | 默认值 | 示例 |
|---|---|---|---|---|
float | 4 | 6~7位有效小数 | 0.0f | float f = 3.14f |
double | 8 | 15位有效小数 | 0.0d | double d = 3.14 |
注意:
• float 赋值时必须加上 f 或 F 后缀,否则会被视为 double。
• 浮点数存在精度丢失问题,如 0.1 + 0.2 ≠ 0.3(需用 BigDecimal 处理高精度计算)。
3. 字符类型
| 类型 | 大小(字节) | 取值范围 | 默认值 | 示例 |
|---|---|---|---|---|
char | 2 | Unicode字符(0 ~ 65535) | ‘\u0000’ | char c = 'A' |
特点:
• 使用单引号 '' 赋值。
• 可表示转义字符(如 \n、\t)或 Unicode(如 '\u0041' 表示 A)。
4. 布尔类型
| 类型 | 大小(字节) | 取值范围 | 默认值 | 示例 |
|---|---|---|---|---|
boolean | 未明确定义 | true/false | false | boolean b = true |
注意:
• Java 中 boolean 不能与整数类型(如 0 或 1)互换。
二、引用数据类型(Reference Data Types)
引用数据类型存储的是对象的引用(内存地址),而非实际值。包括以下类型:
1. 类(Class)
• 如 String、自定义类(如 Person)等。
• 示例:
String str = "Hello"; // str 存储的是字符串对象的引用
2. 接口(Interface)
• 如 List、Map 等。
• 示例:
List<Integer> list = new ArrayList<>();
3. 数组(Array)
• 可以是基本类型或引用类型的数组。
• 示例:
int[] arr = {1, 2, 3}; // 基本类型数组
String[] names = new String[5]; // 引用类型数组
4. 枚举(Enum)
• 预定义常量的集合。
• 示例:
enum Color { RED, GREEN, BLUE }
Color color = Color.RED;
三、基本类型 vs 引用类型
| 特性 | 基本类型 | 引用类型 |
|---|---|---|
| 存储内容 | 直接存储数据值 | 存储对象的内存地址 |
| 内存分配 | 栈(Stack) | 堆(Heap),栈中存储引用地址 |
| 默认值 | 有默认值(如 0、0.0f 等) | 默认值为 null |
| 传递方式 | 按值传递(复制值) | 按引用传递(复制地址) |
| 内存占用 | 固定大小(如 int 占4字节) | 大小不固定,取决于对象 |
四、自动装箱与拆箱(Autoboxing/Unboxing)
Java 5+ 支持基本类型与对应包装类的自动转换:
• 装箱(Boxing):基本类型 → 包装类(如 int → Integer)。
• 拆箱(Unboxing):包装类 → 基本类型(如 Integer → int)。
示例:
Integer num = 10; // 自动装箱:等价于 Integer.valueOf(10)
int n = num; // 自动拆箱:等价于 num.intValue()
五、注意事项
-
类型转换:
• 小范围类型 → 大范围类型:自动转换(如int→double)。
• 大范围类型 → 小范围类型:需强制转换(可能丢失精度)。double d = 3.14; int i = (int) d; // i = 3 -
字符串与基本类型转换:
// String → 基本类型 int num = Integer.parseInt("123"); // 基本类型 → String String s = String.valueOf(123); -
特殊值处理:
•float和double支持特殊值(如NaN、Infinity)。
• 引用类型需处理null值,避免NullPointerException。
1627

被折叠的 条评论
为什么被折叠?



