JS数据在内存中的存储方式

概要:Js数据类型在内存中的存储形式......

Js数据类型:

  • 简单数据类型(基本数据类型):Number、String、Boolean、Undefined、Null
  • 复杂数据类型(引用数据类型):Object、Array、Function

数据结构:

  • 常用的数据结构:数组、栈、堆、列表、链表、图、树
  • Js上述两种数据类型使用两种数据结构:栈(先进后出)、堆(特殊的树形结构)

数据存储方式:

1、简单数据类型:

​ 简单数据类型保存在栈中,这些类型在内存中别占有固定大小,他们的值保存在栈空间,按值访问。变量在声明过程中,会在栈中开辟一段内存空间,变量值直接存在该内存中,变量读写的是它们实际保存的值。

​ 简单数据数据复制时,会为新声明的变量直接开辟一段新空间, 然后把值复制到为新变量分配的空间中

​ 简单数据类在当前执行环境结束时销毁。

2、复杂数据类型:

​ 复杂数据类型是不固定大小的数据,但是存放他们的地址大小是固定的,所以把地址保存在栈中,值保存在堆中。复杂数据类型是一个指针,指针保存在栈中,但是指针指向的是堆。即存储复杂数据类型的变量保存在栈中,数据本身保存在堆中。读取其数据时,先访问栈中的地址,通过地址找到存在堆中的数据。

​ 复杂数据类型在进行拷贝的时候,分为深拷贝和浅拷贝:
​ 浅拷贝:复制的是引用地址,所以拷贝的变量存储的引用地址和原来的指向堆中同一个地址。

​ 深拷贝:栈中开辟一段新的空间存储复制的变量,堆中开辟一个新的空间存储复制的内容,栈中变量存储的引用地址指向堆中复制的一个新的地址。

拓展:

Java基本数据类型:

  • 字符类型:
    • char:16位,存储Unicode码,用单引号赋值。
  • 布尔类型:
    • boolean:只有true和false两个值。
  • 数值类型:
    • byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
    • short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
    • int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
    • long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
    • float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
    • double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
posted @ 2022-12-29 23:58  szq233  阅读(334)  评论(0编辑  收藏  举报