Java 内存处理的问题
学习入门的java有一些时间了,看了一些书本,可能人比较笨,始终对内存处理的理解有点困惑。
是否可以这样理解:
变量就是系统为程序分配的一块栈内存单元,而创建的对象(就是通过new xxx来生成的对象)都是存放在堆内存之中。
例如代码
class Person { ...
Person p1 = new Person();
...}
就是以类名Person做为变量类型定义了一个变量p1,并创建一个Person类的实例对象。
其中变量p1作为新创建对象的引用句柄,在栈内存中分配;而创建的实例对象则是在堆内存分配。
多个变量名必须不同;但是它的栈内存地址可以相同(如p1=p2;);对应的值(就是两个对象的内容)可以相同(如p1=1,p2=1。但是此时内存地址不同)。
这样理解正确么?