棧(stack)又稱堆棧,是限制在表的一端進行插入和刪除的線性表。其限制是僅允許在表的一端進行插入和刪除操作,不允許在其他任何位置進行插入、查找、刪除等操作。
- 堆中某個節點的值總是不大於或不小於其父節點的值;
- 堆總是一棵完全二叉樹。
T1.下列Java代碼中的變量a、b、c分別在內存的____存儲區存放。
class A {
private String a = “aa”;
public boolean methodB() {
String b = “bb”;
final String c = “cc”;
}
}
A 、堆區、堆區、堆區
B 、堆區、棧區、堆區
C 、堆區、棧區、棧區
D 、堆區、堆區、棧區
E 、靜態區、棧區、堆區
F 、靜態區、棧區、棧區
答案:C
解釋:
堆區:只存放類對象,線程共享;
方法區:又叫靜態存儲區,存放class文件和靜態數據,線程共享;
棧區:存放方法局部變量,基本類型變量區、執行環境上下文、操作指令區,線程不共享;
T2 .(不定項選擇題) 以下集合對象中哪幾個是線程安全的()
A LinkedList
B ArrayList
C Vector
D Hashtable
正確答案是:CD
Collection 是對象集合, Collection 有兩個子接口 List 和 Set。
List 可以通過下標 (1,2..) 來取得值,值可以重複,而 Set 只能通過遊標來取值,並且值是不能重複的。
ArrayList , Vector , LinkedList 是 List 的實現類。
ArrayList 是線程不安全的, Vector 是線程安全的,這兩個類底層都是由數組實現的。
LinkedList 是線程不安全的,底層是由鏈表實現的。
Map 是鍵值對集合。
HashTable 和 HashMap 是 Map 的實現類。
HashTable 是線程安全的,不能存儲 null 值。
HashMap 不是線程安全的,可以存儲 null 值。