堆栈方法区理解
如下图所示:
1.值类型如:string,int,bool,double,folat,char...这些基本类型保存的都直接是值,并且不占用空间,所以都保存在栈中。
2.静态对象保存在方法区中,而方法区的对象在程序结束之前都会一直存在,所以建议通常保存一些工具类,要维护的集合等,最好不要保存一次性或多次被抛弃的对象,因为方法区中的数据在服务器停止之前是不会被消除的。
3.正常对象保存在堆中,因为对象占用的空间较大所以保存在堆中较为合理,平时编程最多存放的地方也是在堆中。
4,变量间互相赋值就是互相复制各自栈中的值给对方。你栈中存放的是值就复制值,是引用就复制引用。
特性:
场景:基本类型/自定义类型 变量名1 = 变量名2(基本类型/自定义类型);
基本变量修改:因为基本变量的值是存在栈中的(没有堆这一说),所以新变量被改变对以前的变量没任何影响。
对象修改:因为栈中只存对象地址,所以修改就得在堆中改变(栈中不动),所以对象被改变后大家引用的对象都会变为最新的对象。
本文来自博客园,作者:~~mr.li~~,转载请注明原文链接:https://www.cnblogs.com/li-yan-long/p/14004866.html