JVM负责管理内存空间,
内存被分为三个部分:堆、栈、还有方法区。
堆:存放new出来的对象以及其成员变量
栈:存放局部变量(方法里的都是局部变量)
方法区:存放class字节码文件(包含方法)
引用类型变量里存放的是指向堆中其引用类型对象的地址,而基本数据类型里存放的是具体的数
类和数组,都是引用类型,引用类型变量的默认值都为null。
引用类型变量之间画等号,不是赋值,而是指向同一个对象,修改其中一个的值,也会影响另一个的值,因为他们指向的是同一个对象
基本数据类型变量之间画等号,只是赋值,修改其中一个的值,不会影响另一个的值。
eg:我们new出一个student对象
Student stu = new Student();
在堆里面,有一个Student对象,还有age=;name=null;的这些成员变量
在栈里面,有stu ,里面装着指向Student对象的地址
int a = b;
此时,堆里面没有东西,在栈里有 a 5
我们可以用一张图来看: