堆栈方法区理解

如下图所示:

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

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

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

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

特性:

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

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

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

原文地址:https://www.cnblogs.com/li-yan-long/p/14004866.html