Java 中的基本数据类型和引用数据类型在内存中的存储是怎样的呢1. 基本数据类型Primitive Types包含byte,short,int,long,float,double,char,boolean存储过程存储位置栈Stack变量的值直接存储在栈内存中声明时直接分配固定大小的内存空间大小由类型决定如int占 4 字节栈内存由系统自动管理方法执行完毕即释放栈内存 ┌─────────────┐ │ int a 10 │ ← 直接存储值 10 ├─────────────┤ │ double b3.14│ ← 直接存储值 3.14 └─────────────┘特点访问速度快、生命周期由作用域控制、赋值是值拷贝2. 引用数据类型Reference Types包含类class、接口interface、数组[]、枚举enum存储过程分两步栈Stack存储引用变量即对象的内存地址类似指针堆Heap存储对象的实际数据栈内存 堆内存 ┌─────────────────┐ ┌──────────────────┐ │ Person p 0x123│──地址指向──→ │ name 张三 │ └─────────────────┘ │ age 25 │ │ ... │ └──────────────────┘赋值时的区别引用类型赋值传递的是地址多个引用可指向同一对象Personp1newPerson(张三,25);Personp2p1;// p2 和 p1 指向同一个堆对象p2.setName(李四);// p1.getName() 也会变成 李四3. 关键对比总结对比维度基本数据类型引用数据类型栈存储存值本身存地址指针堆存储无存实际对象数据赋值行为值拷贝独立地址拷贝共享 比较比较值比较地址是否同一对象默认值有固定默认值如 0, falsenull垃圾回收方法结束自动释放GC 回收无引用的堆对象一句话总结基本数据类型“人就在栈里”引用数据类型“栈里只是门牌号人住在堆里”。