Java 数据类型分类
Java 是一种强类型语言,每个变量和表达式都有明确的数据类型。Java 的数据类型可分为两大类:基本数据类型(Primitive Types)和引用数据类型(Reference Types)。
一、基本数据类型(8 种)
基本数据类型直接存储数据值,而非引用地址,分为以下四类:
1. 整数类型(整数,无小数部分)
byte
- 占用空间:1 字节(8 位)
- 取值范围:-128 ~ 127
- 用途:节省内存(如处理文件、网络数据)
short
- 占用空间:2 字节(16 位)
- 取值范围:-32768 ~ 32767
- 用途:适用于较小范围的整数
int(默认整数类型)
- 占用空间:4 字节(32 位)
- 取值范围:-2³¹ ~ 2³¹-1(约 ±21 亿)
- 用途:最常用的整数类型(如计数、索引)
long
- 占用空间:8 字节(64 位)
- 取值范围:-2⁶³ ~ 2⁶³-1
- 用途:存储大整数(声明时需加
L
或l
后缀,如100L
)
2. 浮点类型(带小数部分的数值)
float(单精度)
- 占用空间:4 字节(32 位)
- 精度:约 6-7 位有效数字
- 用途:存储精度要求不高的浮点数(声明时需加
F
或f
后缀,如3.14F
)
double(默认浮点类型)
- 占用空间:8 字节(64 位)
- 精度:约 15-17 位有效数字
- 用途:最常用的浮点类型(如科学计算、小数存储)
3. 字符类型(单个字符)
- char
- 占用空间:2 字节(16 位,Unicode 编码)
- 取值范围:0 ~ 65535(可表示字符、数字或符号)
- 声明方式:用单引号
'
包裹,如'A'
、'中'
、'\u0061'
(Unicode 转义)
4. 布尔类型(逻辑值)
- boolean
- 占用空间:未明确规定(通常 1 字节)
- 取值范围:仅
true
(真)或false
(假) - 用途:条件判断(如
if
语句、循环控制)
二、引用数据类型
引用数据类型存储的是对象的内存地址,而非数据本身。主要包括:
类(Class):如
String
、自定义类(Person
、Student
等)。例:String str = "Hello";
(str
引用字符串对象)接口(Interface):如
List
、Runnable
等,需通过实现类实例化。例:List<Integer> list = new ArrayList<>();
数组(Array):存储相同类型元素的集合,属于引用类型。例:
int[] arr = {1, 2, 3};
(arr
引用数组对象)枚举(Enum):特殊的类,定义固定的常量集合。例:
enum Color { RED, GREEN, BLUE }
注解(Annotation):用于标注代码的元数据(如
@Override
)。
三、基本类型 vs 引用类型的核心区别
特性 | 基本类型 | 引用类型 |
---|---|---|
存储内容 | 直接存储数据值 | 存储对象的内存地址 |
默认值 | 有默认值(如 int 为 0) | 默认值为 null (未引用对象) |
内存分配 | 栈内存(方法调用时) | 对象在堆内存,引用在栈内存 |
传递方式 | 值传递(复制数据) | 引用传递(复制地址) |
四、自动装箱与拆箱
Java 提供了基本类型与对应的包装类(引用类型)的自动转换:
- 装箱:基本类型 → 包装类(如
int
→Integer
) - 拆箱:包装类 → 基本类型(如
Integer
→int
)
例:
Integer num = 100; // 自动装箱(int → Integer)
int n = num; // 自动拆箱(Integer → int)
常用包装类:Byte
、Short
、Integer
、Long
、Float
、Double
、Character
、Boolean
。
理解 Java 数据类型是掌握变量声明、运算及对象操作的基础,合理选择类型可提高程序性能和可读性。