由于翻译的时候经常有个堆栈的概念,最开始的时候,也是模模糊糊记住了。来个图说明下,java代码的存储是怎么分配的,首先javac Xxx.java生成class文件,这个字节码文件就是java跨平台的关键,然后在jvm运行中,先将需要用到的字节码文件放入method area,虽然叫方法区,实际上,它是运行时的永久区,一旦要调什么方法实际上会从这里面找。ok,然后Dog对象在main方法中被初始化,但是对象是存放在heap中的,stack中保留的就是对象的引用。
所以局部变量,和成员变量,在这个图就很好分清楚了,在stack中就是局部变量,在heap中就是成员变量。有了这个图,以后用比喻法和内化法,更加容易学到了!还是要多画图,记得牢。