2.4.3、引用数据类型
引用数据类型用于存储对象的引用(一个内存地址),而不是实际的值。引用数据类型大致包括:类、 接口、 数组、 枚举、 注解等
它和基本数据类型的最大区别就是:
基本数据类型是直接保存在栈中的
引用数据类型在栈中保存的是一个地址引用,这个地址指向的是其在堆内存中的实际位置。(栈中保存的是一个地址,而实际的内容是在堆中,通过地址去找它实际存放的位置)
引用数据类型在创建时,系统会分配两块空间,一块存放引用地址,一块存放实际的对象。
引用数据类型赋值给另一个变量时,赋的是内存地址,而不是实际的数据
如果两个引用数据的变量指向同一个对象时,一个变量修改值,另一个变量的值一样会受到影响。
每个方法执行时都会创建一个方法栈,方法内的变量都会放入栈内存中,方法执行结束,栈销毁,但是因为引用数据类型创建的成本通常比较大,所以才会将引用数据类型存放在堆中,因为堆中的对象不会随方法栈的销毁而回收,所以对象放在堆中,可以反复利用。只有当引用数据类型的数据没有被任何变量引用时,垃圾回收机制才会考虑将其回收。
主要是参考下面的文章