前面花了很多篇幅介紹陣列和鏈結陣列,第三個Explore Card 還是跟陣列有關,將會介紹陣列(Array)、動態陣列(Dynamic Array)、多維陣列(Multidimensional Array)以及字串(String)。
就如這個系列文第一篇所提到,當我們創建陣列時需要指定它的長度,並且在之後不能更改,這代表著陣列儲存元素滿載就無法新增多餘數量的元素,除非重新創建一個新的陣列。
為了解決陣列在空間使用上的不便,許多程式語言都會另外提供動態陣列(Dynamic Array),它與陣列相同,可以隨機存取某一索引值的元素,但它的長度可以動態的調整。
它的實現方法通常是在內部建立一個固定大小的陣列,當元素數量超出容量時,它會自動擴展為更大的陣列,這樣就能新增更多的元素,可以靈活地處理不確定數量的資料。
一般的陣列我們稱為一維陣列,二維陣列則是在陣列中再儲存陣列,這樣資料儲存的格式就不再是線型而是矩陣。
// one-dimensional array
int one = new int[1, 2, 3, 4, 5];
// two-dimensional array
int two = new int [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
雖然字串看起來跟陣列並沒有什麼關係,但實際上字串是char
的陣列,因此字串也可以使用大部分陣列的操作,不過還是有些許的不同。
當單純的比較陣列時,可以使用==
判斷兩個陣列是否相同,但進行字串比較時,能不能使用==
進行判斷要看使用的程式語言是否支援operator overloading
。
operator overloading
,就可以使用==
比較兩個字串。operator overloading
,就不能使用==
進行比較。因為這只是比較兩個字串是不自同一個物件。若是C++這類的程式語言,使用的字串是可變動的,可以像操作陣列一樣修改字串內容。
但像是Java 這類程式語言,它的字串就是不可變的,若想要新增或修改字串內容,則需要重新建立一個新的字串。
因此,若字串是不可變的,對於字串的修改要格外的小心,如果在Java 中希望字串是可變的,可以使用char[]
若需要經常連接字串,則可以使用StringBuilder
。
這邊再重新介紹了陣列的特性,另外介紹了動態陣列、二維陣列以及字串,這些都是很基礎的資料結構,學習這些相關的演算法,對於提升程式的執行效率會有很大的幫助。