Java 数据类型完整专业讲解
Java 数据类型分为两大类:基本数据类型(原生类型 primitive)、引用数据类型(reference)。
Java 是强类型语言,所有变量声明必须指定类型,类型一旦确定不可随意转换。
一、基本数据类型(8种,存值在栈内存)
共四类:整数、浮点、字符、布尔,无对象、无方法,占用固定字节。
1. 整数类型(4种,有符号)
| 类型 | 字节 | 取值范围 | 说明 |
|---|---|---|---|
| byte | 1字节(-128~127) | 小范围数值、文件字节读取 | |
| short | 2字节(-32768~32767) | 较少使用 | |
| int | 4字节 | -2³¹ ~ 2³¹-1 | 默认整数类型,最常用 |
| long | 8字节 | -2⁶³ ~ 2⁶³-1 | 大数,字面量后缀加L/l |
inta=100;longb=9999999999L;2. 浮点类型(2种,小数)
| 类型 | 字节 | 精度 | 说明 |
|---|---|---|---|
| float | 4字节 | 6~7位小数 | 后缀加F/f |
| double | 8字节 | 15~16位小数 | 默认浮点类型 |
floatf=3.14F;doubled=2.718;注意:浮点存在精度丢失,金融计算用BigDecimal。
3. 字符型 char
- 2字节,存储 Unicode 字符,范围
\u0000 ~ \uFFFF - 单引号包裹单个字符,可存汉字、转义字符
charc1='A';charc2='中';charc3='\n';//换行转义符4. 布尔型 boolean
- 仅2个值:
true / false - 内存无固定标准,不能和数字互相转换
booleanflag=true;二、引用数据类型(存地址,栈存引用,堆存实际对象)
- 类 Class:自定义类、String、包装类等
- 接口 Interface
- 数组 Array
- 枚举 Enum
- 记录 Record(Java16+)
特点:
- 变量存储对象内存地址,不是真实数值;
- 默认初始值
null; - 拥有方法、属性,可调用;
- 使用
new在堆中创建实例。
Stringstr=newString("java");int[]arr=newint[5];三、包装类(基本类型 ↔ 对象桥梁)
8种基本类型对应8个包装类,位于java.lang,支持自动装箱/拆箱:
byte→Byte、short→Short、int→Integer、long→Long
float→Float、double→Double、char→Character、boolean→Boolean
//装箱:基本→对象Integernum=10;//拆箱:对象→基本intn=num;四、类型转换规则
1. 自动转换(隐式,小→大)
byte → short → int → long → float → double
char 可直接转 int。
2. 强制转换(显式,大→小,可能丢失精度)
doublex=3.99;inty=(int)x;// y=3,小数截断五、核心区别:基本类型 vs 引用类型
- 存储位置:基本在栈;引用栈存地址,对象在堆
- 默认值:基本有默认0/false;引用默认null
- 内存开销:基本固定字节;引用伴随对象开销
- 比较判断:基本用
==比数值;引用==比地址,equals()比内容 - 传参机制:均为值传递;基本传数值副本,引用传地址副本
六、面试核心要点
- 8种基本类型熟记字节与范围;
- String 是引用类型,不是基本类型;
- boolean 不能和数字转换;
- 浮点不适合高精度财务运算;
- 自动装箱缓存池:Integer(-128~127)复用对象;
- 局部基本变量无默认值,必须手动赋值才能使用。
