基本类型与引用类型

这是一个基础但非常关键的问题,而且你已经在往“Java 的类型体系”这个正确方向深挖了 👍
我会用 先给结论 → 再拆概念 → 最后对照总结 的方式,讲得清晰、好记、不绕


一、先给一句最重要的结论

Java 中只有两大类类型:

① 基本类型(primitive type)
② 引用类型(reference type)

没有第三类。


二、什么是「引用类型」?

1️⃣ 一句话定义

引用类型的变量里,存的不是“数据本身”,
而是“指向某个对象的引用(地址的抽象)”。


2️⃣ 用最直观的例子

Object o = new Object();
  • o引用类型变量
  • o 里存的是:
    👉 “指向堆中 Object 实例的引用”
  • 真正的数据在 堆里
栈            堆
o ─────────▶ Object实例

3️⃣ 引用类型的核心特征

特征 说明
存的是 引用(不是对象)
默认值 null
是否可为 null
是否在堆中 ❌(对象在堆)
是否参与多态

三、Java 中有哪些「引用类型」?

📌 记住一句话

“凡是用 new 出来的,都是引用类型”


1️⃣ 类(class)

Object
String
Integer
User
User u = new User();

2️⃣ 接口(interface)

List list = new ArrayList();
Runnable r = new Thread();

3️⃣ 数组(array)⚠️ 很多人会忽略

int[] a = new int[10];
String[] b = new String[5];

✔ 数组本身是对象
✔ 所以是引用类型


4️⃣ 枚举(enum)

enum Color { RED, GREEN }
Color c = Color.RED;

✔ 枚举本质是类


5️⃣ 注解(annotation)

@Override

✔ 本质是接口 + JVM 特殊处理


四、那“不是引用类型”的是什么?

👉 基本类型(primitive type)

Java 中一共 8 种

类型 大小 示例
byte 1B byte b = 1;
short 2B short s = 2;
int 4B int i = 3;
long 8B long l = 4L;
float 4B float f = 1.0f;
double 8B double d = 2.0;
char 2B char c = 'a';
boolean 不固定 boolean ok = true;

1️⃣ 基本类型的特征

特征 基本类型
存的是 值本身
默认值
是否可为 null
是否是对象
是否可调用方法
是否参与多态

2️⃣ 和引用类型最根本的区别(本质)

int a = 10;
int b = a;

👉 值拷贝

User u1 = new User();
User u2 = u1;

👉 引用拷贝(指向同一对象)


五、包装类型算哪一类?(必考)

Integer x = 10;

Integer 不是基本类型

包装类型是:

基本类型 包装类型
int Integer
long Long
double Double
char Character
boolean Boolean

✔ 包装类型是
✔ 所以是 引用类型


六、一个非常容易混淆的误区

❌ 错误理解

Java 有“值类型”和“引用类型”两种传递方式

✅ 正确理解

Java 只有值传递

  • 基本类型:传的是“值”
  • 引用类型:传的是“引用的值”

七、用一句“终极记忆口诀”收尾

Java 类型只有两种:
基本类型存值,引用类型存引用;
对象在堆,引用随变量走。

posted @ 2026-01-13 20:43  yorkchain  阅读(2)  评论(0)    收藏  举报