Java数据类型分为基本类型和引用类型:前者直接存值于栈中,含8种固定类型;后者存堆中对象地址,包括类、数组等,支持动态内容修改与null值。

Java 数据类型是语法的底层骨架,理解清楚才能避免后续踩坑。系统学不是死记硬背8种基本类型,而是抓住“值 vs 引用”“存储方式 vs 使用场景”这两条主线。
分清两大阵营:基本类型和引用类型
Java 只有两类数据类型:基本类型(primitive)和引用类型(reference)。这个区分贯穿整个语言设计。
- 基本类型共8种:byte、short、int、long、float、double、char、boolean。它们直接存数值,不涉及对象、不占堆内存,变量里就是真实数据。
- 引用类型包括:类(如 String)、接口、数组、枚举、注解等。它们存的是地址——指向堆中某个对象的“指针”,变量本身不存内容,只存位置。
- String 看似简单,实则是典型的引用类型;它不可变(immutable),每次拼接都生成新对象,这点和 int 完全不同。
掌握基本类型的细节差异
光知道名字不够,得明白每种类型能装多少、怎么写、容易错在哪。
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
- 整型默认是 int,长整型要加
L(如1234567890123L),否则超范围会编译报错。 - 浮点型默认是 double,float 字面量必须加
F或f(如3.14f)。 - char 用单引号,只能放一个字符或转义符(如
'\n'、'中'),不能写成"a"(那是字符串)。 - boolean 只有两个字面值:
true和false,不能用0/1或yes/no替代。
理解包装类与自动装箱/拆箱机制
每个基本类型都有对应的包装类(如 int → Integer),这是为泛型、集合、空值支持等准备的桥梁。
- Integer a = 127; Integer b = 127; →
a == b结果为 true(缓存池复用) - Integer c = 128; Integer d = 128; →
c == d结果为 false(超出缓存范围,新建对象) - 比较包装类值,应统一用
.equals(),避免因缓存机制导致逻辑异常。 - 自动装箱发生在赋值、方法传参等场景;但频繁装箱拆箱会影响性能,尤其在循环中要警惕。
数组和 String 是引用类型的典型入口
初学者常误以为数组是“基本结构”,其实它本身就是引用类型——声明后不初始化,值就是 null。
- int[] arr; // 此时 arr 是 null,还没分配内存
- int[] arr = new int[5]; // 才真正创建长度为5的数组,元素默认为0
- String s = null; 合法;但调用
s.length()会抛出 NullPointerException - 数组类型写法统一:任何类型后加
[]就构成新类型,比如String[]、Object[][]都是引用类型。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










