数据存储
- 通过前面的学习我们知道。数据类型分为基本数据类型(简单数据类型)和复杂数据类型(引用数据类型)
- 基本数据类型和复杂数据类型最大的区别就是存储上的区别
- 我们的存储空间分为栈和堆
- 栈:主要存放基本数据类型的内容
- 堆:主要存放复杂数据类型的内容
- 复杂数据类型存放在堆内存中。无序排列, 根据地址来查找(堆空间地址)
- 基本数据类型存储
- var num = 100,在内存中的存储情况
- 直接在 栈空间 内有存储一个数据
- 栈内存: 按序排列, 先来的在栈底, 后来的在栈顶
- 复杂数据类型存储
- 复杂数据类型的存储
- 在堆里面开辟一个存储空间
- 把数据存储到存储空间内
- 把存储空间的地址赋值给栈里面的变量
- 数据类型赋值
- 基本数据类型赋值
- 赋值的时候, 就是直接值的复制
- 赋值以后, 两个变量互相之间没有任何关系
- 改变一个变量, 另一个不会发生变化
- 复杂数据类型赋值
- 复杂数据类型赋值的时候, 是把变量内存储的地址进行赋值
- 赋值以后, 两个变量操作的是一个存储空间
- 任意一个变量去改变存储空间内的数据, 另一个变量看到的一样是改变以后的
- 数据类型比较
- 基本数据类型, 就是 值 和 值 之间的比较
- 复杂数据类型, 是 地址 和 地址 之间的比较
- 因为我们创建了两个对象,那么就会在 堆空间 里面开辟两个存储空间存储数据(两个地址)
- 虽然存储的内容是一样的,那么也是两个存储空间,两个地址
- 复杂数据类型之间就是地址的比较,所以 obj 和 obj2 两个变量的地址不一样
- 所以我们得到的就是 false