前言:
堆是一個運行時資料區,類的物件從堆中分配空間;而堆疊中主要存放一些基本資料型別的變數和物件的參考,
如何區分?
簡單一個例子讓你瞬間明白:
① String demo1 = new String("123");
② String demo2 = "123";
①使用new來創建物件,它存放在堆中,每呼叫一次就創建一個新的物件,
②是先在堆疊中創建物件的參考demo2,如果堆疊中沒有存放“123”,則將“123”存進堆疊并將demo2指向“123”,如果已經有了“123”,就直接將demo2指向“123”,
public static void main(String[] args) {
String demo1 = new String("123");
String demo2 = new String("123");
System.out.println(demo1==demo2);
}
輸出結果為:false
public static void main(String[] args) {
String demo1 = "123";
String demo2 = "123";
System.out.println(demo1==demo2);
}
輸出結果為:true
由此可見第二種方法有利于節省記憶體空間,因為它在記憶體中只存在一個物件,
對比:
堆的優點:可以動態地分配記憶體空間,
堆疊的優點:存取速度比堆快,資料可以共享,
堆的缺點:存取速度較慢,
堆疊的缺點:堆疊中的資料占用的記憶體空間需要在編譯時缺點下來,缺乏靈活性,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/238132.html
標籤:java
下一篇:關于平衡二叉樹的旋轉演算法疑問
