我们数据结构里有堆这一章吗,我怎么记得没有啊?
            数据结构里的堆指的就是线性链表吗?
        java里的堆和数据结构里的堆是一回事吗?

解决方案 »

  1.   

    堆,
    英文是“heap”,在操作系统中用来指一段连续的内存,它有一个重要特性是“当被分配,并用完后,系统不自动将它回收,需要自己用编程语句(如:c++中的delete())来回收它栈,
    英文是“stack”,在操作系统中用来指一段连续的内存,它用完后,系统会自动回收,程序员不用为它得回收操心   在java中所有的new生成的对象都是放在堆中的
      

  2.   

    就我所知道的是 ....
    在JAVA里面 堆放的是真正的对象
    栈里放的是指向该对象的引用.
      

  3.   

    java中。。基本数据类型存放在堆内存中
             引用类型存放在栈内存中
      

  4.   

    JAVA里不注重堆栈概念
    因为JAVA所有的对象都是放在堆里,而引用放在栈上你有兴趣可以看看C的书
    从内存分配来看,在编译期被确定并申明的对象是放在栈上
    在运行起申明的对象放在堆上栈容量比较小,堆则视内存大小在C里由于内存分配都是自己做的,就会比较明显
    Object obj;  //在栈上分配内存
    Object obj = new Object;  //在堆上分配内存
      

  5.   

    java里面堆的概念和数据结构中堆栈的概念不一样
      

  6.   

    堆和栈是相对的,堆是动态的,栈是静态的。
    java中的内存都是以堆实现的,相当于C中的malloc或者C++中的new
    这也是为什么java中声明数组长度可以是变量的原因,而C或者C++就不行。
      

  7.   

     Java把内存划分成两种:一种是栈内存,一种是堆内存。  
       
      在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。  
       
     当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。  
       
      堆内存用来存放由new创建的对象和数组。  
       
     在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。  
       
      在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。  
       
      引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。  
      

  8.   

    我还是不明白,
    1数据结构中也有堆。
    ----------数据结构里的堆指的就是线性链表吗?2 java里面堆的概念和数据结构中堆栈的概念不一
    ----------怎么就不一样呢?
      

  9.   

    数据结构中没有单独的那出来做为一章,java中的堆是内存中的一块内存区域.