堆栈方法区理解

如下图所示:

1.值类型如:string,int,bool,double,folat,char...这些基本类型保存的都直接是值,并且不占用空间,所以都保存在栈中。

2.静态对象保存在方法区中,而方法区的对象在程序结束之前都会一直存在,所以建议通常保存一些工具类,要维护的集合等,最好不要保存一次性或多次被抛弃的对象,因为方法区中的数据在服务器停止之前是不会被消除的。

3.正常对象保存在堆中,因为对象占用的空间较大所以保存在堆中较为合理,平时编程最多存放的地方也是在堆中。

4,变量间互相赋值就是互相复制各自栈中的值给对方。你栈中存放的是值就复制值,是引用就复制引用。

特性:

场景:基本类型/自定义类型  变量名1  = 变量名2(基本类型/自定义类型);

基本变量修改:因为基本变量的值是存在栈中的(没有堆这一说),所以新变量被改变对以前的变量没任何影响。

对象修改:因为栈中只存对象地址,所以修改就得在堆中改变(栈中不动),所以对象被改变后大家引用的对象都会变为最新的对象

posted @ 2020-11-19 12:24  ~~mr.li~~  阅读(406)  评论(0编辑  收藏  举报