学到值类型和引用类型的时候有点小小的惊讶,因为没有想到会涉及到栈和堆的内容,这时候真的感触很深——知识之间都是联系的温故而知新。
先来了解一下栈和堆(百度百科):
一、堆栈空间分配区别:
1)栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于 数据结构中的栈;
2)堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒 是类似于链表。
二、堆栈缓存方式区别:
1)栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;
2)堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回 收)。所以调用这些对象的速度要相对来得低一些。
三、堆栈数据结构区别:
1)堆(数据结构):堆可以被看成是一棵树,如:堆排序;
2)栈(数据结构):一种先进后出的数据结构。
值类型和引用类型的区别:
值类型和引用类型运行小例子:
1、值类型是先把p1的值赋给p2,然后再对p2进行赋值最后,这个过程p1的值不改变,只有p2的值改变。
2、引用类型是把p1的地址赋给p2,然后对p2指向的地址的内容进行修改,p1和p2指向的是同一地址所以p1对 应地址的内容与p2一致。
定义struct结构(值类型):
运行结果如下
定义class类(引用类型)
运行结果如下
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)