Java中的棧是一種數據結構,用于在程序運行時存儲臨時變量和方法調用。棧遵循“先入后出”的原則,最新的數據存儲在棧的頂部。
/** * 計算階乘 * @param n * @return */ public static int factorial(int n) { if (n == 0) { return 1; } return n * factorial(n - 1); }
在上述代碼中,每次遞歸調用factorial方法時,都會將當前調用堆棧的狀態存儲在棧中。當遞歸結束返回到最初的方法調用時,棧頂的數據也會被彈出。
除了棧外,Java中還有堆內存,用于存儲動態對象和實例變量。堆內存遵循垃圾收集機制,會自動回收不再被使用的對象。
public static void main(String[] args) { String hello = "Hello"; String world = "World"; String greeting = hello + " " + world; System.out.println(greeting); }
在上述代碼中,字符串"Hello"和"World"分配在堆內存中,而變量greeting分配在棧內存中。當通過+操作符合并字符串時,Java會在堆內存中新建一個字符串對象,內容為"Hello World"。最后將greeting變量指向這個新對象。
上一篇java窗口和按鈕代碼