第16章 數(shù)組
到現(xiàn)在舟陆,你對(duì)數(shù)組的認(rèn)識(shí)停留在:可以創(chuàng)建組裝坠非、通過(guò)索引訪問(wèn)敏沉、長(zhǎng)度不可變。
下面,我們了解一下數(shù)組比較高級(jí)的東西
16.1 數(shù)組為什么特殊
數(shù)組盟迟、容器這種秋泳,都叫做 持有對(duì)象 的方式。
但是數(shù)組在以下三個(gè)方面有優(yōu)點(diǎn):
- 效率高攒菠。
數(shù)組是效率最高的存儲(chǔ)和隨機(jī)訪問(wèn)對(duì)象引用序列的方式轮锥。數(shù)組是一個(gè)簡(jiǎn)單的線性序列,所以效率高要尔,代價(jià)就是長(zhǎng)度被固定舍杜。 - 類型
個(gè)人理解就是可以直接存具體的類型,編譯器可以檢查類型匹配與否赵辕。 - 保存基本數(shù)據(jù)能力
數(shù)組可以持有基本數(shù)據(jù)類型既绩,而沒(méi)有泛型的容器是不行的。
16.2 數(shù)組是第一級(jí)對(duì)象
這里說(shuō)了基本類型數(shù)組 和 其他對(duì)象數(shù)組的區(qū)別还惠。二者基本沒(méi)有區(qū)別饲握,只是存放的對(duì)象不同,其他方法都相同蚕键。
16.3 返回一個(gè)數(shù)組
在 C/C+ 中救欧,在返回?cái)?shù)組操作時(shí),由于只能返回指向數(shù)組的指針锣光,容易造成內(nèi)存泄漏笆怠,生命周期控制十分困難。
但是在 java 中誊爹,由于有辣雞回收器的存在蹬刷,所以直接來(lái) “返回一個(gè)數(shù)組” 就完事了。
16.4 多維數(shù)組
直接看代碼频丘,在多維數(shù)組這里有一個(gè) Arrays.deepToString() 方法办成。
public static void main(String args[]){
int[][] a ={
{1,2,3},
{4,5,6}
};
System.out.println(Arrays.deepToString(a));
}
16.5 數(shù)組與泛型
數(shù)組這里基本不會(huì)用到泛型。但是書上給出了一個(gè)非常特殊的例子搂漠,用以說(shuō)明 java 理論上是支持這種定義方式的迂卢。
16.6 創(chuàng)建測(cè)試數(shù)據(jù)
這一小節(jié)給出了幾種填充數(shù)組的方法。用于我們將數(shù)據(jù)填入數(shù)組桐汤。
- Arrays.fill() :用一個(gè)值填充各個(gè)位置
int[] a = new int[6];
Arrays.fill(a,1); // 全部填充 1
Arrays.fill(a,,1,4,2); // 指定位置填 2
- 數(shù)據(jù)生成器 Generator
看不懂而克,作者這里提供了非常多的 Generator。
16.7 Arrays 實(shí)用功能
這一個(gè)小節(jié)作者給出了 Arrays類中的一些比較常用的方法惊科。
- System.arraycopy()
這個(gè)方法不屬于 Array 類拍摇,但是用這個(gè)復(fù)制比 用 for循環(huán)快很多。該方法對(duì)所有類型進(jìn)行了重載馆截。
System.arraycopy(i,start,j,start,length) // 4個(gè)參數(shù)
- Arrays.equals()
比較兩個(gè)數(shù)組是否相等(每個(gè)元素都相等)。 - Arrays.sort()
- Arrays.binarySearch()
在有序數(shù)組中快速查找,兩個(gè)參數(shù)蜡娶,目標(biāo)數(shù)組+target
16.8 總結(jié)
沒(méi)啥總結(jié)的