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