Java 数据类型全解析:基础、引用与包装类全面梳理
Java 中的数据类型分为两大类:
🧩 一、基本数据类型(Primitive Types)
共 8 种,分为 数值类型、字符类型、布尔类型:
类型 | 占用内存 | 默认值 | 说明 |
---|---|---|---|
byte | 1 字节 | 0 | 整数类型,范围 -128 ~ 127 |
short | 2 字节 | 0 | 整数类型,范围约 ±32K |
int | 4 字节 | 0 | 常用整数类型 |
long | 8 字节 | 0L | 长整型,大整数用它 |
float | 4 字节 | 0.0f | 单精度浮点数 |
double | 8 字节 | 0.0d | 双精度浮点数,推荐使用 |
char | 2 字节 | ‘\u0000’ | 字符类型,存储单个字符 |
boolean | 1 bit | false | 逻辑类型,true 或 false |
✅ 整数类型取值范围计算公式:
最小值:-2^(n-1)
最大值:2^(n-1) - 1
其中
n
是位数,short
是 16 位。
一个字节占 8 位
🔢 举例 short 的取值范围(2字节16位):
最小值:-2^(16 - 1) = -2^15 = -32,768
最大值:2^15 - 1 = 32,767
✅ 所以 short
范围为:
-32,768 ~ 32,767
🔍 补充理解:为什么是 2^(n-1)
而不是 2^n
?
因为:
- Java 的整数都是带符号的二进制数(采用补码表示)
- 最高位(第 n 位)是符号位:
0
表示正数1
表示负数
- 所以有效数值的位数只有
n - 1
位
💡 补充说明:
- 整数类型默认是
int
,使用 long 需加L
后缀。 - 小数类型默认是
double
,float 需加f
后缀。 - char 使用单引号包字符,例如
'A'
。 - boolean 只表示真假,不能像 C 那样用整数代替。
🧩 二、引用数据类型(Reference Types)
引用类型存储的是对象的地址(引用),不直接存储数据。
类型 | 示例说明 |
---|---|
类(Class) | 自定义类或 Java 内置类,如 String 、Scanner |
接口(Interface) | 如 Runnable , List , Map 等 |
数组(Array) | 如 int[] , String[] 等 |
枚举(Enum) | 自定义枚举类型 |
注解(Annotation) | Java 特有的一种元数据类型 |
🔄 基本类型 vs 引用类型
特性 | 基本类型 | 引用类型 |
---|---|---|
存储内容 | 真实值(直接存储) | 引用(地址) |
是否可为空 | ❌ 不可以为 null | ✅ 可以为 null |
是否有方法 | ❌ 没有(除包装类) | ✅ 有方法 |
默认值 | 如 0, 0.0, false | null |
📦 包装类(Wrapper Classes)
Java 提供了基本类型的封装类,用于在需要对象的场景下使用基本类型(如集合):
基本类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
包装类是对象,可以和泛型、集合等一起使用。