从图中我们可以很清晰的看出,程序通过加载器从硬盘中加载到内存中,并且保存到不同的位置,通俗的说就是new出来的东西存放在heap(堆区),局部变量存放在stack(栈区),静态变量和字符串常量存放在data segment(数据段)中,逻辑代码存放在code segment(代码段)中
通过下面的代码来解释变量存放的位置:
class A{
private int id;
public A(){
}
}
public class MyJVM {
public static void main(String[] args) {
A a = new A();
/**
* 这句代码的含义:
* 1.a本身的内存是在栈区分配的,属于局部变量
* 2.new A() 是指在堆区动态分配一块区域,当做A的对象
* 3. a = new A() 表示堆中的内存赋给了a
* 4. 所以a指向了堆中的一块内存,所以可以理解为a代表了堆中的一块内存
*
*/
}
}
理解了上面的内存分配下面我们来探讨一下equals()方法:
Object类的equals()方法简介:
1: