栈和堆
栈(stack)中主要存放一些基本类型的变量和对象的引用其优势是存取速度比堆要快,但缺点是存在栈中的数据大小与生存期必须是确定的,缺乏灵活性,
堆(heap 多)用于复杂数据类型(引用类型)分配空间,例如数组对象、object对象;它是运行时动态分配内存的,因此存取速度较慢。
栈和堆的图例
- 值类型:简单类型,变量在存储的时候,存储的是值本身。如果做为参数传递,仅仅是将栈空间中存储的内容复制一份进行赋值,修改其中一个变量另外不会变化
- 引用类型:复杂类型,变量在存储的时候,存储的是对象的地址,如果做为参数传递,是将栈空间中存储的引用地址复制一份进行赋值,造成实参和形参指向同一个空间,修改其中一个另外一个也会变化