一、计算机中,变量 常量 函数 类均属于符号,是一个抽象的概念,不是一个实体
函数的实例或类的实例才是一个实体的概念
变量 常量犹如现实生活中的一个纸盒,这个纸盒可以存储1-N个对象的内存地址
二、函数 类犹如一个实物的设计稿,它是实物的设计方式,它可以定义一个实物的属性和方法,但是它本身并不是一个实物
- 类被调用时 new Object()时才创建一个类的实体,类的实体会被存储于堆空间
2.函数被调用后的函数名()时才创建一个函数的实体,函数的实体被存储于栈空间
此时,可能有朋友会问我,那变量 常量 函数 类又是被存储在什么地方呢?他们是在什么时候被创建的呢?
变量 常量 函数 类被声明后,编译解析器解析到这个声明符后,解析器就已经创建了一个变量 常量 函数。
变量 常量 函数被创建完毕后,它存储于哪里呢?
全局变量/全局常量/全局函数存储于计算机内存中的静态区
局部变量/局部常量/局部函数存储于计算机内存中的堆空间
计算机中的四大内存区
1.栈空间:由编译器自动分配并在内存中的数据使用完毕后释放内存
作用:存放函数的参数值和函数内部所声明的局部变量的值和变量的指针
2.静态区:程序执行结束后系统释放
作用:存储全局变量 静态变量,js中的典型 const,java中典型static
3.文字常量区:程序执行结束后释放
作用:字符类型的值或字符串类型的值存储在这个内存
4.堆空间:由程序员手动释放 注:java js的垃圾回收器已帮我们释放
作用:存储function或object
指针是什么
指针犹如现实生活中的一个人,类或被声明的函数虽然存储于堆,但他们要被外部调用并执行,必须创建他们的实体并让实体在栈中执行。外部的变量不能直接访问这个内存中的对象或函数,所以需要通过指针指向它的内存地址,从而让这个对象需要被调用时能及时通过内存地址访问内存地址所对应的内存中的对象并完成调用。