一膀值、初步認(rèn)識(shí)數(shù)組
1.理解數(shù)組
Java提供了數(shù)組這種數(shù)據(jù)結(jié)構(gòu)幽七,主要可以將大量的數(shù)據(jù)存儲(chǔ)起來(lái)
定義:數(shù)組是用來(lái)存儲(chǔ)相兼容數(shù)據(jù)類型的定長(zhǎng)的容器
2.數(shù)組的特點(diǎn)
a.數(shù)組中只能存放相兼容類型的數(shù)據(jù)局冰,不能存放多種類型的數(shù)據(jù)
b.數(shù)組中既可以存儲(chǔ)基本數(shù)據(jù)類型,也可以存儲(chǔ)引用數(shù)據(jù)類型
c.數(shù)組是定長(zhǎng)的殿漠,一旦一個(gè)數(shù)組被初始化傻寂,那么這個(gè)數(shù)組的長(zhǎng)度就不能再發(fā)生改變
d.數(shù)組相當(dāng)于是一個(gè)容器
e.數(shù)組中存儲(chǔ)的數(shù)據(jù)被稱為元素
3.使用數(shù)組的好處
可以自動(dòng)的給存儲(chǔ)到數(shù)組中的數(shù)據(jù)進(jìn)行編號(hào),從0開始域庇,方便操作數(shù)據(jù)
這些編號(hào)就被稱為下標(biāo)嵌戈,角標(biāo),或者索引
編號(hào)和數(shù)據(jù)之間存在著一一對(duì)應(yīng)的關(guān)系听皿,通過編號(hào)熟呛,就可以直接找到相對(duì)應(yīng)的數(shù)據(jù) ??
4.數(shù)組的定義
注意:數(shù)組屬于引用數(shù)據(jù)類型,本身仍然是一種數(shù)據(jù)類型尉姨,所以可以定義數(shù)組變量
數(shù)據(jù)類型 變量名稱 = 初始值庵朝;
方式一:數(shù)據(jù)類型[] 數(shù)組名稱;
方式二:數(shù)據(jù)類型 數(shù)組名稱[];
推薦使用方式一又厉,c#已經(jīng)不支持方式二定義數(shù)組
int x = 10;
int[] a;
int a[];
說明:int是一種基本數(shù)據(jù)類型九府,int[]是數(shù)組類型,在這里覆致,int表示數(shù)組中存儲(chǔ)的元素的數(shù)據(jù)類型
二侄旬、數(shù)組的初始化
所謂初始化,Java中的數(shù)據(jù)必須先進(jìn)行初始化煌妈,然后才能使用儡羔,為數(shù)組中的元素分配內(nèi)存空間,并為每個(gè)元素賦初始值
1.靜態(tài)初始化
初始化時(shí)由程序員指定每個(gè)元素的初始值璧诵,由系統(tǒng)計(jì)算數(shù)組的長(zhǎng)度
語(yǔ)法:數(shù)組元素類型[] 數(shù)組名稱 = new 數(shù)組元素類型[]{元素1汰蜘,元素2.。之宿。族操。。}比被;
例如:int[] arr = new int[]{10,20,30,40};
? ? 可簡(jiǎn)寫為int[] arr = {10,20,30,40};
說明:任何一個(gè)變量都需要由自己確定的數(shù)據(jù)類型坪创,這里的arr表示是數(shù)組變量名稱炕婶,int表示數(shù)組中元素的類型,int[]表示數(shù)組類型
2.動(dòng)態(tài)初始化
初始化時(shí)由程序員指定數(shù)組的長(zhǎng)度莱预,由系統(tǒng)分配初始值
語(yǔ)法:數(shù)組元素類型[] 數(shù)組名稱 = new 數(shù)組元素類型[元素的個(gè)數(shù)或者數(shù)組的長(zhǎng)度];
初始值的分配規(guī)則:
整型? 0
浮點(diǎn)型? ? 0.0
字符型 \u0000? 【空格,方框】
布爾類型? ? false
引用數(shù)據(jù)類型? null
注意:
a.在初始化數(shù)組時(shí)项滑,不要靜態(tài)初始化和動(dòng)態(tài)初始化同時(shí)使用依沮,【不要在進(jìn)行數(shù)組初始化時(shí),既指定數(shù)組的長(zhǎng)度枪狂,而且給每個(gè)元素賦初始值】
b.既然數(shù)組也是一種數(shù)據(jù)類型危喉,所以在定義數(shù)組的時(shí)候,也可以先聲明州疾,然后再初始化
? ? 舉例:
? ? int x;
? ? x = 10;
? ? int[] socres;
? ? socres = new int[10];
三辜限、數(shù)組的使用
1.訪問數(shù)組的元素值
通過下標(biāo)【索引】
語(yǔ)法:數(shù)組名稱[下標(biāo)]
2.獲取數(shù)組中的元素個(gè)數(shù)【數(shù)組的長(zhǎng)度】
在Java中,所有的數(shù)組都提供了一個(gè)length屬性严蓖,通過這個(gè)屬性可以訪問數(shù)組的長(zhǎng)度或者元素的個(gè)數(shù)
語(yǔ)法:數(shù)組名稱.length
3.給數(shù)組元素賦值或者修改值
4.遍歷數(shù)組
遍歷:依次訪問數(shù)組中的每一個(gè)元素【通過不同的下標(biāo)獲取各自對(duì)應(yīng)的值】
? ? 1>簡(jiǎn)單for循環(huán)【while循環(huán)】
? ? 2>增強(qiáng)for循環(huán)【foreach循環(huán)】
? ? ? ? JDK1.5之后新增的
? ? ? ? 優(yōu)點(diǎn):用于遍歷數(shù)組和集合薄嫡,無(wú)需下標(biāo),就可以直接獲取數(shù)組或者集合中的元素
? ? 語(yǔ)法:
? ? for(數(shù)組元素類型 變量名 :數(shù)組或者集合名稱) {
? ? ? ? //循環(huán)體
? ? }
四颗胡、內(nèi)存中的數(shù)組
數(shù)組是一種引用數(shù)據(jù)類型毫深,數(shù)組引用變量其實(shí)就是一個(gè)引用,數(shù)組元素和引用在內(nèi)存中是分開存放
數(shù)組引用變量可以指向任何有效的內(nèi)存空間毒姨,只有當(dāng)該引用指向有效的空間之后哑蔫,才可以通過這個(gè)引用操作數(shù)組中的的元素,當(dāng)引用賦值為null弧呐,表示該引用指向了一個(gè)無(wú)效的空間
數(shù)組的引用變量存儲(chǔ)于椪⒚裕空間中,被new出來(lái)的實(shí)際的數(shù)組存儲(chǔ)于堆空間中
總結(jié):對(duì)于引用數(shù)據(jù)類型俘枫,當(dāng)兩個(gè)引用變量指向同一塊內(nèi)存空間時(shí)腥沽,當(dāng)修改一個(gè)變量的值時(shí),另外一個(gè)也跟著變化
擴(kuò)展:內(nèi)存的分類
a.寄存器,最快的一塊存儲(chǔ)區(qū)崩哩,由編譯器根據(jù)需求進(jìn)行分配巡球,我們?cè)诔绦蛑袩o(wú)法控制
b.棧:存放基本數(shù)據(jù)類型的變量以及引用數(shù)據(jù)類型的引用
? ? 特點(diǎn):先進(jìn)后出,后進(jìn)先出邓嘹,被執(zhí)行完成之后酣栈,該函數(shù)或者語(yǔ)句中的變量將被銷毀,所占用的空間將會(huì)被釋放
c.堆:存放所有使用new關(guān)鍵字創(chuàng)建出來(lái)的實(shí)體
? ? 特點(diǎn);執(zhí)行完之后不會(huì)立即被釋放汹押,當(dāng)使用完成之后矿筝,會(huì)被標(biāo)記上垃圾的標(biāo)記,等待系統(tǒng)的垃圾回收機(jī)制回收它
d.方法區(qū):
? ? 靜態(tài)域:存放靜態(tài)變量【static】
? ? 常量池:存放字符串常量和基本數(shù)據(jù)類型的常量
? ? int[] arr = {235,54};
? ? String str = "hello world";
五棚贾、數(shù)組的應(yīng)用
1.排序
冒泡排序
? ? 排序思路:比較兩個(gè)相鄰的下標(biāo)對(duì)應(yīng)的元素窖维,如果符合條件就交換位置【最值出現(xiàn)在最右邊】
選擇
? ? 排序思路:固定一個(gè)下標(biāo)榆综,然后使用這個(gè)下標(biāo)對(duì)應(yīng)的元素和其余的元素進(jìn)行比較,如果符合條件就交換位置【最值出現(xiàn)在最左邊】
2.查找
順序查找
? ? ? ? 將要查找的數(shù)據(jù)和數(shù)組中的元素進(jìn)行一一的比對(duì)铸史,如果相等鼻疮,說明查找到了
二分法查找
? ? ? ? 前提條件:數(shù)組必須是有序的
? ? ? ? 查找思路:通過折半來(lái)縮小查找范圍【以升序?yàn)槔瑢⒋檎业臄?shù)據(jù)與中間下標(biāo)對(duì)應(yīng)的元素進(jìn)行比較琳轿,如果中間下標(biāo)對(duì)應(yīng)的元素大于待查找的元素的話判沟,說明待查找的元素在前半部分】
數(shù)組優(yōu)缺點(diǎn)總結(jié)
優(yōu)點(diǎn):1、按照索引查詢?cè)厮俣瓤?崭篡、能存儲(chǔ)大量數(shù)據(jù)3挪哄、按照索引遍歷數(shù)組方便缺點(diǎn):1、根據(jù)內(nèi)容查找元素速度慢2琉闪、數(shù)組的大小一經(jīng)確定不能改變迹炼。3、數(shù)組只能存儲(chǔ)一種類型的數(shù)據(jù)4颠毙、增加斯入、刪除元素效率慢5、未封...
優(yōu)點(diǎn):數(shù)組定義簡(jiǎn)單吟秩,而且訪問很方便缺點(diǎn):數(shù)組中所有元素類型都必須相同 數(shù)組大小必須定義時(shí)給出咱扣,而且大多數(shù)情況下,數(shù)組空間的大小一旦確定后就不能更改 數(shù)組的空間必須是連續(xù)的涵防,這就造成數(shù)組在內(nèi)存中分配空間...