栈:存放局部变量
堆:存放new出来的对象
方法区:存放类的信息,static变量,常量池(字符串常量) 在堆中,可以说是堆的一部分
更直白一点,如果凭空new一个对象 编译的时候就会报错 person无法作为一个类 会提示你创建一个person类
静态变量 在加载类信息的时候就已经加载到内存中 存放在方法区里 静态变量或方法属于类,不需要new对象 就可以通过类名直接调用
在main方法中 new一个学生对象 stu1
java虚拟机就会在栈中 根据类的模板 加载出一个类信息 stu1 类中方法实现是固定的,java给每一个方法都分配了一个地址,需要使用方法的时候
底层引用的是这个方法的地址,而不是每new一个对象就加载一次方法体
stu1属于一个局部变量 存放在堆中
在栈里的信息都有一个地址 通过这个地址来引用使用它们 在java中有关于对象的操作 其实就操作它们的地址