數(shù)組定義:多個(gè)相同類型的數(shù)據(jù)的組合肪康。
數(shù)組的說明:
定義:多個(gè)相同類型的數(shù)據(jù)的組合湘今。
目的:為了在內(nèi)存中對(duì)數(shù)據(jù)進(jìn)行統(tǒng)一的管理。
1.數(shù)組本身位喂,屬于引用數(shù)據(jù)類型
2.數(shù)組的元素惩嘉,可以是基本數(shù)據(jù)類型罢洲,也可以是引用數(shù)據(jù)類型
一:一維數(shù)組的聲明與初始化
正確的方式:
//靜態(tài)初始化:數(shù)組的聲明、初始化和數(shù)組元素的賦值是同時(shí)進(jìn)行的文黎。
String[] names = new String[]{"林","張","李","高"};
//簡(jiǎn)化:
String[] names1 = {"林","張","李","高"};
//動(dòng)態(tài)初始化:數(shù)組的聲明惹苗、初始化和數(shù)組元素的賦值是分開進(jìn)行的。
int[] ages = new int[4];
//結(jié)論:不管是靜態(tài)初始化還是動(dòng)態(tài)初始化耸峭,一旦數(shù)組聲明創(chuàng)建完成桩蓉,數(shù)組的長(zhǎng)度就確定了。
而且長(zhǎng)度不可改變劳闹!注:不管是動(dòng)態(tài)還是靜態(tài)初始化數(shù)組院究,一定在創(chuàng)建的時(shí)候,就指明了數(shù)組的長(zhǎng)度本涕!
錯(cuò)誤的聲明方式:
//String[] names2 = new String[4]{"林","張","李","高"};
//String[4] names3 = new String[]{"林","張","李","高"};
3.數(shù)組元素的引用
通過數(shù)組的角標(biāo)业汰,調(diào)用數(shù)組的指定的元素。角標(biāo)從0開始菩颖,到數(shù)組的長(zhǎng)度-1結(jié)束样漆。
4.數(shù)組的屬性:length:數(shù)組的長(zhǎng)度
5.數(shù)組的遍歷
for(int i = 0;i < ages.length;i++){
System.out.println(ages[i]);
}
6.數(shù)組元素的默認(rèn)初始化值
//5.1 整型(byte\short\int\long的數(shù)組元素:0
//5.2 浮點(diǎn)型(float\double的數(shù)組元素:0.0
//5.3字符型(char的數(shù)組元素:'\u0000' 或 0,不是'0'
//5.4 布爾型(boolean)的數(shù)組元素:false
//5.5 引用數(shù)組類型的數(shù)組元素:null 不同于"null"
2.空指針異常:NullPointerException
//情況一:
// int[] arr1 = new int[10];
// arr1 = null;
// System.out.println(arr1[0]);
//情況二:
// int[][] arr2 = new int[4][];
// System.out.println(arr2[1]);//null
// System.out.println(arr2[1][1]);//空指針異常
//情況:
// String[] arr3 = new String[]{"AA","BB","CC"};
// arr3[0] = null;
// System.out.println(arr3[0].toString());
重點(diǎn):.二維數(shù)組元素的默認(rèn)初始化值
int[][] arr1 = new int[3][];
arr1[0] = new int[3];
System.out.println(arr1[0]);//地址值 ,因?yàn)橐呀?jīng)new創(chuàng)建對(duì)象了晦闰,堆中分配了空間放祟。
System.out.println(arr1[1]);//null ,因?yàn)閯?chuàng)建對(duì)象呻右。
System.out.println(arr1[0][0]);//0
3.數(shù)組中的常見操作
1.針對(duì)于數(shù)值型的數(shù)組:求最大值舞竿、最小值、總和窿冯、平均數(shù)。
2.復(fù)制一個(gè)數(shù)組确徙,實(shí)現(xiàn)數(shù)組元素的反轉(zhuǎn)
int[] array1,array2;
array1 = new int[]{1,2,3};
//賦值(賦值不是復(fù)制)
array2 = array1;(操作修改array2中的值醒串,array1中的值也會(huì)被修改执桌,兩者在內(nèi)存中指向同一對(duì)象)
//復(fù)制
array2 = new int[array1.length];
for(int i = 0;i < array2.length;i++){
array2[i] = array1[i];
}
4.數(shù)組的排序算法
選擇排序
冒泡排序、快速排序