基本概念
类,属性,方法
对象
创建对象

C++: Student stu; Student stu();Java: Student stu; Student stu = new Student(); Python: Student stu; Student stu(); JS: var stu = new Student();
类成员变量可以不赋初值,默认0 ,false ,null;
局部变量需要赋初值
创建对象的本质
虚拟内存

JVM的内存模型


(1) 方法区:默认最大容量为64M ,JVM会将加载的Java 类存入方法区,
- 保存类的结构(属性与方法)
- 类静态成员
- final类型常量等内容
(2) 堆:默认最大容量为64M,存放对象所持有的数据,同时保持对原类的引用。
可以简单的理解为对象属性的值保存在堆中,对象调用的方法保存在方法区。
堆可以处于物理上不连续的内存空间,但在逻辑上它是连续的。
- new出来的东西
(3) 栈:默认最大容量为1M,在程序运行时每当遇到方法调用时, JVM就会在栈中划分一块内存称为栈帧(Stack frame),栈帧又由局部变量区 ,栈帧又由局部变量区和操作数栈组成,
局部变量区存放方法中的局部变量和参数,
操作数栈存放方法执行过程中产生的中间结果。
当方法调用结束后,JVM会收回栈 会收回栈帧所占用的内存。
- 局部变量:如对象变量,函数调用过程中的变量等

注:基本数据类型和引用数据类型在内存的分配上存在着不同:
(1) 对于基本数据类型,如整型、浮点型、布尔型 对于基本数据类型,如整型、浮点型、布尔型
等,声明此类型变量,只会在栈中分配一块内存空间;
(2) 对于引用数据类型,如类、数组、接口、枚举 对于引用数据类型,如类、数组、接口、枚举
等,声明此类型变量,在内存中分配两块空间,第一块内存分配在栈中,只存放地址,不存放具
体数值,第二块内存分配在堆中,存放的是具体数值,如对象属性值等
eg.对象的创建过程
Rect r1;
r1 = new Rect();
ex.



