本帖最后由 孙传磊 于 2013-3-13 20:01 编辑
这问题看是容易回答难,我按自己的理解说吧:
首先要明确什么是堆和栈:
简单的说堆和栈都是jvm在内存中开辟的空间,并赋予不同的功能。
接下来明确他们的作用,
栈的作用:栈中主要存放一些基本类型的变量(如int, short……)和对象句柄。存取速度比堆要快,栈数据 可以共享。这里的“对 象句柄”也可以说是 new 出来的对象名字或者叫它地址。
堆的作用:堆内存用来存放由new创建的对象和数组,一般占用的内存空间相对较大。在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。简单的就是存放对象的具体内容。
这是后new的作用就突出啦:
new关键字的作用就是在堆内存中分配一块空间,将栈中的引用(叫它指针更形象,指针内存放的是地址)指向这在堆中开辟的空间,同时调用对象的构造方法。这就是使用new的原因吧。
|