我没学过数据结构...但看书的时候看到这两样东西..我是新手..觉得我理解到什么程度就OK就怎么解释吧..谢谢

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【wujiaweizhuzhibin】截止到2008-07-21 11:52:48的历史汇总数据(不包括此帖):
    发帖的总数量:3                        发帖的总分数:20                       每贴平均分数:6                        
    回帖的总数量:3                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:1                        结贴的总分数:5                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:2                        未结的总分数:15                       
    结贴的百分比:33.33 %               结分的百分比:25.00 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主该结一些帖子了
      

  2.   

    前人回答过了。引用2个csdn的链接 自己去看吧http://topic.csdn.net/t/20060226/22/4579205.html
    http://topic.csdn.net/t/20040111/15/2654217.html
      

  3.   

    堆和栈是内存管理的两种方式。
    栈是先进后出的数据结构。就像弹夹一样,先压进去的子弹总在最后一个击发。
    计算机里的栈也是,先分配的那个内存会在最后一个释放。
    举个例子:
    public void method(){
      int a = 1;
      float b = 0.1;
    }
    当调用这个方法的时候,首先在栈里分配a的内存空间,然后分配b的内存空间。当这个方法结束时,这两个内存空间都会被释放。堆分配没有栈的顺序原则,在堆中只要有空闲的空间就可以分配。这个就带来了内存回收的问题。在java中,只要new出来的对象都是在堆中分配空间的。所以java提供了垃圾回收机制专门回收那些失效的对象。
      

  4.   

    堆和栈,应该属于内存管理的应用范畴.
    操作系统对程序员可见的内存管理,一般是堆管理和栈管理.
    堆管理,优势在于快速的随机分配内存,但是会产生大量的内存碎片,不便于垃圾回收.
    栈管理,关键在于你存放数据的先后顺序,栈是后进先出的.
    两者应用在不同场景,好象没有什么可比性.栈区,一般存放局部的数据.比如,方法的内部变量.当a方法调用b方法时,操作系统会进行现场保护,也就是把调用b前的一些数据进行压栈操作,然后进入b方法,当b执行完毕,在进行出栈操作,进行现场恢复,然后接着向后进行.堆区,一般存放程序的动态数据.比如,你在程序中经常会new一些对象,这些对象的产生过程是,操作系统在堆区根据Class的描述分配一块内存出来,然后将对象保存到这块区域,并返回对象的引用.