




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第4章數(shù)組與方法4.1一維數(shù)組
4.2二維數(shù)組
4.3多維數(shù)組
4.4方法
4.1一維數(shù)組
一維數(shù)組中可以存放多個(gè)數(shù)據(jù),但這些數(shù)據(jù)的類型應(yīng)該是完全相同的。
4.1.1一維數(shù)組的聲明與內(nèi)存的分配
要使用Java的數(shù)組,必須經(jīng)過兩個(gè)步驟:
(1)聲明數(shù)組。
(2)給該數(shù)組分配內(nèi)存。
這兩個(gè)步驟的語法格式如下:
數(shù)據(jù)類型數(shù)組名[] //聲明一維數(shù)組
數(shù)組名=new數(shù)據(jù)類型[個(gè)數(shù)]; //給數(shù)組分配內(nèi)存數(shù)組的聲明格式中,“數(shù)據(jù)類型”用于聲明數(shù)組元素的數(shù)據(jù)類型。常見的數(shù)據(jù)類型有整型、浮點(diǎn)型與字符型等。“數(shù)組名”用來統(tǒng)一這組相同數(shù)據(jù)類型的元素的名稱,其命名規(guī)則和變量的相同,建議讀者使用有意義的名稱為數(shù)組命名。聲明數(shù)組后,接下來便是配置數(shù)組所需的內(nèi)存,其中“個(gè)數(shù)”是告訴編譯器所聲明的數(shù)組要存放多少個(gè)元素,而“new”則是命令編譯器根據(jù)括號(hào)里的個(gè)數(shù)在內(nèi)存中開辟一塊內(nèi)存供該數(shù)組使用。下面是聲明一維數(shù)組并給該數(shù)組分配內(nèi)存的范例:
intscore[]; //聲明整型數(shù)組score
score=newint[3]; //為整型數(shù)組score分配內(nèi)存空間,其元素個(gè)數(shù)為3上面范例第一行中,當(dāng)聲明一個(gè)整型數(shù)組score時(shí),score可視為數(shù)組類型的變量,此時(shí)這個(gè)變量并沒有包含任何內(nèi)容,編譯器僅分配一塊內(nèi)存給它,用來保存指向數(shù)組實(shí)體的地址,如圖4-1所示。圖4-1聲明整型數(shù)組聲明之后進(jìn)行內(nèi)存分配操作,也就是執(zhí)行上例中的第二行語句。這一行會(huì)開辟3個(gè)可供保存整數(shù)的內(nèi)存空間,并把此內(nèi)存空間的參考地址賦給score變量。其內(nèi)存分配的流程如圖4-2所示。圖4-2內(nèi)存分配的流程圖4-2中的內(nèi)存參考地址0X1000是假賦值,此值會(huì)因環(huán)境的不同而異。如第3章所述,數(shù)組屬于非基本數(shù)據(jù)類型,因此數(shù)組變量score所保存的并非數(shù)組的實(shí)體,而是數(shù)組實(shí)體的參考地址。除了用上例中的兩行程序來聲明并分配內(nèi)存給數(shù)組之外,也可以用較為簡潔的方式把兩行縮成一行來編寫,其格式如下:
數(shù)據(jù)類型數(shù)組名[]=new數(shù)據(jù)類型[個(gè)數(shù)]
上述格式會(huì)在聲明的同時(shí)分配一塊內(nèi)存空間,供該數(shù)組使用。下例聲明整型數(shù)組score并開辟可以保存11個(gè)整數(shù)的內(nèi)存給score變量。
intscore[]=newint[11]; //聲明一個(gè)元素個(gè)數(shù)為10的整型數(shù)組score,同時(shí)開辟一塊內(nèi)存空間供其使用
在Java中,由于整數(shù)數(shù)據(jù)類型所占用的空間為4字節(jié),而整型數(shù)組score可保存的元素有11個(gè),所以上例中占用的內(nèi)存共有4?×?11?=?44字節(jié)。圖4-3將數(shù)組score用圖形來表示,讀者可以較為容易地理解數(shù)組的保存方式。圖4-3數(shù)組的保存方式4.1.2數(shù)組中元素的表示方法
要使用數(shù)組中的元素,可以利用索引來完成。Java的數(shù)組索引編號(hào)由0開始。例如數(shù)組score,score[0]?代表第1個(gè)元素,score[1]?代表第2個(gè)元素,score[9]?代表數(shù)組中的第10個(gè)元素(也就是最后一個(gè)元素)。圖4-4為score數(shù)組中元素的表示法及數(shù)組中元素的排列。圖4-4數(shù)組元素的表示及排列下面程序聲明了一個(gè)一維數(shù)組,其長度為3,利用for循環(huán)輸出數(shù)組的內(nèi)容后,再輸出數(shù)組的元素個(gè)數(shù)。
【例4-1】TestJava4_1.java。程序說明:
(1)第7行聲明整型數(shù)組a。
(2)第8行開辟了一塊內(nèi)存空間,以供整型數(shù)組a使用,其元素個(gè)數(shù)為3。
(3)第9~10行利用for循環(huán)輸出數(shù)組的內(nèi)容。由于程序中并未給數(shù)組元素賦值,因此輸出的結(jié)果都是0。
(4)第11行輸出數(shù)組的長度。此例中數(shù)組的長度是3,即代表數(shù)組元素的個(gè)數(shù)有3個(gè)。
要特別注意的是,在Java中取得數(shù)組的長度(也就是數(shù)組元素的個(gè)數(shù))可以利用“.length”完成,如下面的格式:
數(shù)組名.length
也就是說,若是要取得TestJava4_1中所聲明的數(shù)組a的元素個(gè)數(shù),只要在數(shù)組a的名稱后面加上“.length”即可,如下面的程序片段:
a.length; //取得數(shù)組的長度
4.1.3數(shù)組初值的賦值
如果要直接在聲明時(shí)就給數(shù)組賦初值,則可以利用大括號(hào)完成,只要在數(shù)組的聲明格式后面再加上初值的賦值即可,如下面的格式:
數(shù)據(jù)類型數(shù)組名[]={初值0,初值1,…,初值n}
在大括號(hào)內(nèi)的初值會(huì)依序指定給數(shù)組的第1,…,n+1個(gè)元素。此外,在聲明時(shí),并不需要將數(shù)組元素的個(gè)數(shù)列出,編譯器會(huì)根據(jù)所給出的初值個(gè)數(shù)來判斷數(shù)組的長度。4.1.4與數(shù)組操作有關(guān)的API方法
在Java語言中提供了許多與數(shù)組操作有關(guān)的API方法,供開發(fā)人員使用。下面介紹兩種常用的數(shù)組操作方法:一個(gè)是數(shù)組的拷貝操作,另一個(gè)是數(shù)組的排序操作。其他操作請(qǐng)讀者自行查閱JDK幫助文檔。
【例4-3】TestJava4_3.java。案例1找出數(shù)組元素中的最大值與最小值
【案例描述】
編寫程序求得數(shù)組中的最大值和最小值。
【技術(shù)要點(diǎn)】
數(shù)組的索引就好像飯店房間的編號(hào)一樣,想要找到某個(gè)房間,就得先找到房間編號(hào)。
【代碼與注釋】
【例4-5】TestJava4_5.java?!境绦蛘f明】
(1)第6行聲明整數(shù)變量i作為循環(huán)控制變量及數(shù)組的索引。另外還聲明了存放最小值的變量min與最大值的變量max。
(2)第7行聲明整型數(shù)組A,其數(shù)組元素有5個(gè),其值分別為74、48、30、17、62。
(3)第8行將min與max的初值設(shè)為數(shù)組的第一個(gè)元素。
(4)第10~17行逐一輸出數(shù)組中的內(nèi)容,并判斷數(shù)組中的最大值與最小值。
(5)第18~19行輸出比較后的最大值與最小值。將變量min與max的初值設(shè)成數(shù)組的第一個(gè)元素后,再逐一與數(shù)組中的各元素相比。若該元素比min小,則將該元素的值指定給min存放,使min的內(nèi)容保持最小;同樣地,若該元素比max大,則將該元素的值指定給max存放,使max的內(nèi)容保持最大。for循環(huán)執(zhí)行完,也就表示數(shù)組中所有的元素都已經(jīng)比較完畢,此時(shí)變量min與max的內(nèi)容就是最小值與最大值。
4.2二維數(shù)組
4.2.1二維數(shù)組的聲明與分配內(nèi)存
二維數(shù)組的聲明方式和一維數(shù)組類似,內(nèi)存分配也是用new這個(gè)關(guān)鍵字。其聲明與分配內(nèi)存的格式如下:
數(shù)據(jù)類型數(shù)組名[][]
數(shù)組名=new數(shù)組類型[行的個(gè)數(shù)][列的個(gè)數(shù)]
與一維數(shù)組不同的是,二維數(shù)組在分配內(nèi)存時(shí)必須告訴編譯器二維數(shù)組行與列的個(gè)數(shù)。因此在上述格式中,“行的個(gè)數(shù)”是告訴編譯器所聲明的數(shù)組有多少行,“列的個(gè)數(shù)”則是說明該數(shù)組有多少列。同樣地,可以用較為簡潔的方式來聲明數(shù)組,其格式如下:
數(shù)據(jù)類型數(shù)組名[][]=new數(shù)據(jù)類型[行的個(gè)數(shù)][列的個(gè)數(shù)];
若采用上述寫法,則在聲明的同時(shí)就開辟了一塊內(nèi)存空間,以供該數(shù)組使用。
上面的語句中,整型數(shù)據(jù)score可保存的元素有4×3=12個(gè),而在Java中,int數(shù)據(jù)類型所占用的空間為4個(gè)字節(jié),因此該整型數(shù)組占用的內(nèi)存共為4?×?12=48個(gè)字節(jié)。
2.取得二維數(shù)組的行數(shù)與特定行的元素個(gè)數(shù)
在二維數(shù)組中,若要取得整個(gè)數(shù)組的行數(shù),或者某行元素的個(gè)數(shù),可利用“.length”來獲取,其語法格式如下:
數(shù)組名.length //取得數(shù)組的行數(shù)
數(shù)組名[行的索引].length //取得特定行元素的個(gè)數(shù)
也就是說,如要取得二維數(shù)組的行數(shù),只要用數(shù)組名加上“.length”即可;如要取得數(shù)組中特定行的元素個(gè)數(shù),則必須在數(shù)組名后面加上該行的索引值,再加上“.length”。4.2.2二維數(shù)組元素的引用及訪問
二維數(shù)組元素的輸入、輸出方式與一維數(shù)組相同。
【例4-6】TestJava4_6.java。程序說明:
(1)第6行聲明整數(shù)變量i、j作為外層與內(nèi)層循環(huán)控制變量及數(shù)組的索引,i控制行的元素,j控制列的元素,而sum則用來存放所有數(shù)組元素值的和,也就是總成績。
(2)第7行聲明一整型數(shù)組num,并為數(shù)組元素賦初值,該整型數(shù)組共有8個(gè)元素。
(3)第9~18行輸出數(shù)組里各元素的內(nèi)容,并進(jìn)行成績匯總。
(4)第20行輸出sum的結(jié)果,即總銷售量。 4.3多維數(shù)組
要提高數(shù)組的維數(shù),只要在聲明數(shù)組時(shí)再加一組索引與中括號(hào)即可,所以三維數(shù)組的聲明為intA[][][],而四維數(shù)組為intA[][][][],以此類推。
使用多維數(shù)組時(shí),輸入、輸出方式和一、二維數(shù)組相同,但是每多一維,嵌套循環(huán)的層數(shù)就必須多一層,所以維數(shù)越高的數(shù)組其復(fù)雜度也就越高。下面以三維數(shù)組為例,在聲明數(shù)組時(shí)即賦初值,再將其元素值輸出并計(jì)算總和。
【例4-7】TestJava4_7.java。 4.4方法
方法可以簡化程序結(jié)構(gòu),也可以節(jié)省編寫相同程序代碼的時(shí)間,達(dá)到程序模塊化的目的。在每一個(gè)類中出現(xiàn)的main()即是一個(gè)方法。使用方法來編寫程序代碼有相當(dāng)多的好處,可簡化程序代碼,精簡重復(fù)的程序流程,并能把具有特定功能的程序代碼獨(dú)立出來,使程序的維護(hù)成本降低。
方法可用如下的語法來定義:4.4.1方法操作的簡單范例
下面的程序在顯示器上先輸出19個(gè)星號(hào)“*”,換行之后再輸出“ILikeJava!”這一字符串,最后輸出19個(gè)星號(hào)。該程序是一個(gè)簡單的方法操作范例。
【例4-8】TestJava4_8.java。從本程序中可以很清楚地看出,當(dāng)調(diào)用方法時(shí),程序會(huì)跳到被調(diào)用的方法中去運(yùn)行,結(jié)束后則返回原調(diào)用處繼續(xù)運(yùn)行。在TestJava4_8中,調(diào)用與運(yùn)行star()方法的流程如圖4-5所示。圖4-5調(diào)用與運(yùn)行star()方法的流程4.4.2方法的參數(shù)與返回值
如果方法有返回值,則在聲明方法之前就必須指定返回值的數(shù)據(jù)類型;如果有參數(shù)要傳遞到方法內(nèi),則在方法的括號(hào)內(nèi)必須填上該參數(shù)及其類型。TestJava4_9是用來說明方法的使用的另一個(gè)例子,它可以接收一個(gè)整數(shù)參數(shù)n,輸出2×n個(gè)星號(hào)后,返回整數(shù)2×n。
【例4-9】TestJava4_9。在TestJava4_9中,因?yàn)閟tar()傳遞整數(shù)值,所以第10行的聲明要在star()方法之前加上int關(guān)鍵字。此外,因要傳入一個(gè)整數(shù)給star(),所以star()的括號(hào)內(nèi)也要注明參數(shù)的名稱與數(shù)據(jù)類型。如果要傳遞一個(gè)參數(shù),則只要在方法的括號(hào)內(nèi)填上所要傳入的參數(shù)名稱與類型即可。下例是一個(gè)關(guān)于計(jì)算長方形對(duì)角線長度的例子,其中show_length()方法可接收長方形的寬與高,計(jì)算后返回對(duì)角線的長度。
【例4-10】TestJava4_10.java。輸出結(jié)果:
對(duì)角線長度=29.068883707497267
TestJava4_10的第7行調(diào)用show_length(22,19),把整數(shù)22和19傳入show_length()方法中。第12行則利用Math類中的sqrt()方法計(jì)算對(duì)角線長度。sqrt(n)的作用是將參數(shù)n開根號(hào)。因sqrt()的返回值是double類型,所以show_length()的返回值也是double類型。
4.4.3方法的重載
方法的重載就是在同一個(gè)類中允許同時(shí)存在一個(gè)以上同名方法,只要它們的參數(shù)個(gè)數(shù)或類型不同即可。在這種情況下,該方法就叫被重載,這個(gè)過程稱為方法的重載。
【例4-11】TestJava4_11.java。4.4.4將數(shù)組傳遞到方法中
1.傳遞一維數(shù)組
要傳遞一維數(shù)組到方法中,只要指明傳入的參數(shù)是一個(gè)數(shù)組即可。下例傳遞一維數(shù)組到largest()方法,當(dāng)largest()接收到此數(shù)組時(shí),便會(huì)把數(shù)組的最大值輸出。
【例4-12】TestJava4_12.java。輸出結(jié)果:
最大的數(shù)=22
上述程序中,第9~16行聲明largest()方法,并將一維數(shù)組作為該方法的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海中學(xué)2023學(xué)年度第一學(xué)期高一年級(jí)9月月考語文試卷
- 管理會(huì)計(jì)(第三版)教案全套 徐艷 模塊1-10 管理會(huì)計(jì)概述- 責(zé)任會(huì)計(jì)
- 藝術(shù)館裝修意外免責(zé)條款
- 2025年度安全防護(hù)設(shè)備預(yù)付款采購合同模板
- 中醫(yī)護(hù)理學(xué)(第5版)課件 第三章經(jīng)絡(luò)
- 關(guān)于天麻可行性研究的報(bào)告
- 制藥工程實(shí)驗(yàn)室
- 網(wǎng)絡(luò)游戲游戲內(nèi)容創(chuàng)新與用戶體驗(yàn)提升計(jì)劃
- 自來水廠建設(shè)可行性研究報(bào)告
- 項(xiàng)目價(jià)格波動(dòng)趨勢分析表
- 銀行消保培訓(xùn)課件
- 酒店重大事故隱患排查整治方案
- 亞馬遜賬戶安全培訓(xùn)內(nèi)容
- 水泥攪拌樁施工重點(diǎn)、難點(diǎn)分析及應(yīng)對(duì)措施
- 貴州民族大學(xué)輔導(dǎo)員考試試題2023
- 2023年陜西公務(wù)員申論考試真題及答案-B卷
- 建筑施工安全風(fēng)險(xiǎn)辨識(shí)分級(jí)管控指南
- 九年級(jí)化學(xué)下冊(cè)第9單元溶液課題3溶液的濃度第二課時(shí)化學(xué)反應(yīng)中的溶質(zhì)質(zhì)量分?jǐn)?shù)的計(jì)算作業(yè)講義新人教版
- 信息化武器裝備智慧樹知到答案章節(jié)測試2023年中北大學(xué)
- 高考英語作文練習(xí)紙(標(biāo)準(zhǔn)答題卡)
- 教科版二年級(jí)科學(xué)下冊(cè)(做一個(gè)指南針)教育教學(xué)課件
評(píng)論
0/150
提交評(píng)論