1void
test1()
29 console.writeline("
count =
" +arraylist.count);
10 console.writeline("
capacity =
" +arraylist.capacity);
11 }
1static
void main(string
args)
2
新建乙個test 類,新增乙個方法test1(),新增如上**,在main方法中呼叫。
輸出結果為:count = 3
capacity = 4
如果length = 0,輸出結果為
count = 0
capacity = 0
如果length = 1,輸出結果為
count = 1
capacity = 4
如果length = 4,輸出結果為
count = 4
capacity = 4
如果length = 5,輸出結果
count = 5
capacity = 8
先介紹下arraylist的兩個欄位就不難理解為什麼會輸出這樣的結果。
count欄位含義為動態陣列的實際長度,capacity含義為動態陣列的實際容量,這兩個欄位的含義是不同的。我們借助反編譯工具來一**竟。
publicvirtual
int add(object
value)
this._items[this._size] =value;
this._version++;
int num = this
._size;
this._size = num + 1
; //否則長度+1,容量不變
return
num;
}
這是arraylist原始碼中的add方法,_size相當於count, _items.length相當於capacity.我們把注意力放在這一行**:
this.ensurecapacity(this._size + 1);
1private
void ensurecapacity(int
min)210
if (num 1114
this.capacity =num;15}
16 }
把注意力放在第5行發現,如果容量為0,則設定為4,否則翻倍。
以上就是動態陣列arraylist自動擴容原理。
flex Bindable深入研究
bindable 元資料標籤,它在 中的作用就是向編譯器提供如何編譯程式的資訊。它的最大作用是使程式元件間的資料同步變得容易。在開發中通常用上bindable作用在檢視控制項上,如給它繫結乙個物件,則以後只需要在邏輯層更改這個物件的值,則檢視層的控制項資料會自動更新 同步 而不再需要手動去更新檢視。...
URLRequest深入研究
urlrequest 的乙個例項 html view plain copy create the request.所構建的nsurlrequest具有乙個依賴於快取響應的特定策略,cachepolicy取得策略,timeoutinterval取得超時值 nsurlrequest therequest...
深入研究AsyncTask
asynctask提供了一種在後台執行操作而在ui執行緒顯示結果的方式,而且開發者不必操作執行緒或者handler.乙個asynctask定義了三種泛型分別是params,progress,result,還有四個函式分別是onpreexecute doinbackground onprogressu...