150天打卡day08_數(shù)組
今日內(nèi)容
數(shù)組的定義
數(shù)組的訪問
數(shù)組的復(fù)制
數(shù)組的排序
1. 什么是數(shù)組
程序都是由數(shù)據(jù)結(jié)構(gòu)和算法組成,數(shù)組就是一種最簡單的數(shù)據(jù)結(jié)構(gòu),是具有?相同數(shù)據(jù)類型的一組數(shù)據(jù)?的集合。
if結(jié)構(gòu)、循環(huán),解決的都是算法問題。那什么是算法?所謂算法就是流程,像取錢怎么???插卡,輸入密碼,輸入要取錢的金額,確定。那這個(gè)過程,第一步怎么做,第二步怎么做,判斷還是循環(huán),解決問題的步驟 這就是算法。
解決問題(算法)需要選擇正確的數(shù)據(jù)結(jié)構(gòu)。
所謂數(shù)據(jù)結(jié)構(gòu),簡單的說就是把數(shù)據(jù)按照特定的某種結(jié)構(gòu)來保存,每種數(shù)據(jù)結(jié)構(gòu)都具有自己的特點(diǎn),設(shè)計(jì)合理的數(shù)據(jù)結(jié)構(gòu)是解決問題的前提條件。數(shù)組,就是最基本的、用得最多的一種數(shù)據(jù)結(jié)構(gòu)。
試想下,存儲(chǔ)一個(gè)學(xué)員的成績,可以聲明一個(gè)整型變量score來存儲(chǔ)。
假如用程序保存班級(jí)30人的Java考試成績?
一百個(gè)人?一千個(gè)人?甚至更多?聲明太多的變量,顯然很繁瑣,并且不適合整體的操作。像這種情況,可以使用數(shù)組這種數(shù)據(jù)結(jié)構(gòu)來解決。
數(shù)組為相同數(shù)據(jù)類型的元素組成的集合,數(shù)組元素按線性順序排列
所謂線性順序是指除第一個(gè)元素外,每一個(gè)元素都有唯一的前驅(qū)元素;除最后一個(gè)元素外,每一個(gè)元素都有唯一的后繼元素(“一個(gè)跟一個(gè)”),可以通過元素所在位置的順序號(hào)(下標(biāo))做標(biāo)識(shí)訪問每一個(gè)元素(下標(biāo)從0開始,最大到元素個(gè)數(shù)-1)。
數(shù)組的特點(diǎn)
1、數(shù)組是相同數(shù)據(jù)類型的元素組成的集合,也是用來存儲(chǔ)數(shù)據(jù)的
例如:
球類數(shù)組 [足球,籃球,兵乓球...]
電器類數(shù)組 [電視機(jī),電冰箱,電腦...]
2、數(shù)組元素都是按線性順序排列?除了第一個(gè)元素外,每一個(gè)元素都有唯一的前驅(qū)元素或者除最后一個(gè)元素外,每一個(gè)元素都有唯一的后繼元素(一個(gè)跟一個(gè))
Java的數(shù)組也分為兩大類型
基本類型數(shù)組
引用類型數(shù)組
基本類型數(shù)組
聲明數(shù)組的語法:數(shù)據(jù)類型 [] 數(shù)組名 = new 數(shù)據(jù)類型[大小];
例如:聲明一個(gè)int類型的arr數(shù)組,里面存放10個(gè)元素
int[]為數(shù)組類型,表示數(shù)組中的每一個(gè)元素為int類型;數(shù)組也是在內(nèi)存中用于存儲(chǔ)數(shù)據(jù)的,并且是存儲(chǔ)一組數(shù)據(jù),同樣需要一個(gè)對(duì)它的引用,該引用即為arr,arr稱為數(shù)組類型變量(引用);new為特定的聲明數(shù)組的關(guān)鍵字。數(shù)組的聲明必須要有元素個(gè)數(shù),10即為數(shù)組中元素的個(gè)數(shù),也稱為數(shù)組長度??偨Y(jié)下來,定義基本類型數(shù)組的要點(diǎn)包括:
1)??????確切的數(shù)據(jù)類型:用于開辟空間大小
2)??????整體的數(shù)組名字:用于對(duì)數(shù)據(jù)的引用
3)??????不能缺少的“[??]?”
注意在定義數(shù)組時(shí)使用的new關(guān)鍵字,正是因?yàn)閚ew語句,才使得數(shù)組分配到了指定大小的空間
聲明數(shù)組的兩種方式
1、數(shù)據(jù)類型 [] 數(shù)組名
2、數(shù)據(jù)類型 數(shù)組名 []
數(shù)組的初始化
Java語言中數(shù)組必須先初始化,然后才可以使用,所謂的初始化,就是為數(shù)組中的數(shù)組元素分配內(nèi)存空間,并為每個(gè)數(shù)組元素賦初始值。
數(shù)組的初始化有兩種方式:
動(dòng)態(tài)初始化:初始化時(shí)程序員只需要指定數(shù)組長度,由系統(tǒng)為數(shù)組元素分配空間
靜態(tài)初始化:初始化時(shí)由程序員顯示的指定每個(gè)數(shù)組元素的初始值,由系統(tǒng)決定數(shù)組長度
動(dòng)態(tài)初始化
基本類型(數(shù)據(jù)元素為基本類型)的數(shù)組創(chuàng)建后,默認(rèn)為其數(shù)組元素設(shè)置了初始值
byte、short、char、int、long為0
float和double為0.0
boolean為false
例如:聲明一個(gè)名為arr,長度為5的整數(shù)類型數(shù)組

new關(guān)鍵字在內(nèi)存中開辟了一塊長度為5的空間,其中系統(tǒng)為數(shù)組中的每一個(gè)值都設(shè)置了默認(rèn)的初始值為0(相當(dāng)于是聲明一個(gè)名為arr的數(shù)組,里面存儲(chǔ)了5個(gè)元素,其中每個(gè)元素的值都默認(rèn)為0)。
靜態(tài)初始化
可以在數(shù)組聲明的同時(shí)對(duì)數(shù)組的元素進(jìn)行初始化,這時(shí)可以省略new運(yùn)算符
例如

手動(dòng)為數(shù)組中的每個(gè)元素都賦了初始值,元素的個(gè)數(shù)即為數(shù)組的長度
初始化變量也可以先聲明后初始化,但是如下以下寫法只能用于聲明時(shí)的初始化,不能用于賦值,否則會(huì)有編譯錯(cuò)誤。
練習(xí)
將這5個(gè)學(xué)生的成績100,80,90,99,95存儲(chǔ)在一個(gè)數(shù)組里
定義一個(gè)長度為5的數(shù)組,并手動(dòng)為每個(gè)元素賦初始值
注意:
不管采用哪種方式初始化數(shù)組,一旦初始化完成,數(shù)組的長度就不可改變。
Java允許通過數(shù)組的length屬性來訪問數(shù)組的長度。
數(shù)組的訪問
數(shù)組中最常用的用法就是訪問數(shù)組元素,包括對(duì)數(shù)組元素進(jìn)行賦值和取出數(shù)組元素的值,
通過下標(biāo)訪問數(shù)組元素
訪問數(shù)組元素都是通過在數(shù)組引用變量后緊跟一個(gè)方括號(hào)[],方括號(hào)中是數(shù)組元素的索引值,這樣就可以訪問數(shù)組元素了,訪問到數(shù)組元素后,就可以把一個(gè)數(shù)組元素當(dāng)成一個(gè)普通變量使用,包括為該變量賦值和取值該變量的值,這個(gè)變量的類型就是定義數(shù)組時(shí)使用的是類型
注意:Java語言的數(shù)組索引是從0開始的,也就是說,第一個(gè)數(shù)組元素的索引值是0,最后一個(gè)數(shù)組元素的索引值為數(shù)組長度-1,
通過下標(biāo)訪問的時(shí)候下標(biāo)從 0 開始,最大到 length-1
如果訪問數(shù)組元素時(shí)指定的索引值小于0,或者大于等于數(shù)組的長度,編譯程序時(shí)不會(huì)出現(xiàn)任何錯(cuò)誤,但是運(yùn)行時(shí)會(huì)報(bào)數(shù)組下標(biāo)越界異常。
獲取數(shù)組的長度
所有 的數(shù)組都提供了一個(gè)length屬性,通過length屬性可以訪問到數(shù)組的長度,一旦獲得了數(shù)組的長度,就可以通過循環(huán)來遍歷該數(shù)組的每個(gè)數(shù)組元素。
通過調(diào)用數(shù)組的length屬性可以獲取到數(shù)組的長度。
定義引用類型數(shù)組
使用引用類型聲明的數(shù)組都是引用類型數(shù)組,引用類型數(shù)組的每個(gè)元素是一個(gè)引用類型變量,使用引用類型數(shù)組的目的是管理一組對(duì)象。
二維數(shù)組
定義
數(shù)組的數(shù)組:二維數(shù)組的每一個(gè)元素是一個(gè)一維數(shù)組
定義三行四列數(shù)組
3種定義格式
1、數(shù)據(jù)類型[][] 數(shù)組名 = new 數(shù)據(jù)類型[二維數(shù)組的長度][每個(gè)一維數(shù)組的長度];
arr[0]---下標(biāo)為0的位置上的一維數(shù)組
arr[1][3]---如果要獲取具體的元素需要兩個(gè)下標(biāo)
2、數(shù)據(jù)類型[][] 數(shù)組名 = new 數(shù)據(jù)類型[二維數(shù)組的長度/包含的一維數(shù)組的個(gè)數(shù)][];
3、數(shù)據(jù)類型[][] 數(shù)組名 = {{元素},{元素1, 元素2},……};
注意:[]在變量名前的時(shí)候,是緊跟數(shù)據(jù)類型的;如果[]在后,則是屬于當(dāng)前變量名。
二維數(shù)組的應(yīng)用
二維數(shù)組的長度:數(shù)組名.length ---每個(gè)一維數(shù)組:數(shù)組名[下標(biāo)].length
二維數(shù)組的遍歷---兩重for循環(huán)
二維數(shù)組的反轉(zhuǎn)---頭尾交換
從控制臺(tái)輸入行數(shù),打印對(duì)應(yīng)的楊輝三角
歡迎??點(diǎn)贊+關(guān)注,學(xué)習(xí)編程不迷路,筆芯?~
