堆和栈(stack and heap)

1. 【堆】和【栈】的数据结构:

  [ 数据结构 ] 中的堆、栈是一种逻辑结构,因此是一种抽象的概念;而 [ 程序和进程 ] 中的堆、栈是一种存储结构,因而是一种“具体”或“物理”的概念;

  堆是一种经过排序的【树形】数据结构,而栈是【线性】数据结构;

  栈可以通过两种方式来实现:使用数组来实现栈,这种栈也称为静态栈;使用链表来实现栈,这种栈也称为动态栈

  堆和栈(stack and heap)

2. 【堆】和【栈】的用途:

 

堆内存:存放new创建的【对象】和【数组】。(GC垃圾回收)

栈内存:存放【基本类型的变量】、【对象的引用(引用变量)】。(如何回收?)栈内存的速度要快于堆内存

   注:Java的基本数据类型有8种:byte、short、int、long、float、double、char、boolean     

   注:基本类型常量(public static final)存放在常量池中 

堆和栈(stack and heap)

3. “==” 和 equals() 的区别

“==”比较的是内存地址,equal比较的是内容本身

4. 应用示例

堆和栈(stack and heap)