《Java程序案例教程》課件第4章_第1頁
《Java程序案例教程》課件第4章_第2頁
《Java程序案例教程》課件第4章_第3頁
《Java程序案例教程》課件第4章_第4頁
《Java程序案例教程》課件第4章_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第4章數(shù)組與方法4.1一維數(shù)組

4.2二維數(shù)組

4.3多維數(shù)組

4.4方法

4.1一維數(shù)組

一維數(shù)組中可以存放多個數(shù)據(jù),但這些數(shù)據(jù)的類型應(yīng)該是完全相同的。

4.1.1一維數(shù)組的聲明與內(nèi)存的分配

要使用Java的數(shù)組,必須經(jīng)過兩個步驟:

(1)聲明數(shù)組。

(2)給該數(shù)組分配內(nèi)存。

這兩個步驟的語法格式如下:

數(shù)據(jù)類型數(shù)組名[] //聲明一維數(shù)組

數(shù)組名=new數(shù)據(jù)類型[個數(shù)]; //給數(shù)組分配內(nèi)存數(shù)組的聲明格式中,“數(shù)據(jù)類型”用于聲明數(shù)組元素的數(shù)據(jù)類型。常見的數(shù)據(jù)類型有整型、浮點型與字符型等?!皵?shù)組名”用來統(tǒng)一這組相同數(shù)據(jù)類型的元素的名稱,其命名規(guī)則和變量的相同,建議讀者使用有意義的名稱為數(shù)組命名。聲明數(shù)組后,接下來便是配置數(shù)組所需的內(nèi)存,其中“個數(shù)”是告訴編譯器所聲明的數(shù)組要存放多少個元素,而“new”則是命令編譯器根據(jù)括號里的個數(shù)在內(nèi)存中開辟一塊內(nèi)存供該數(shù)組使用。下面是聲明一維數(shù)組并給該數(shù)組分配內(nèi)存的范例:

intscore[]; //聲明整型數(shù)組score

score=newint[3]; //為整型數(shù)組score分配內(nèi)存空間,其元素個數(shù)為3上面范例第一行中,當聲明一個整型數(shù)組score時,score可視為數(shù)組類型的變量,此時這個變量并沒有包含任何內(nèi)容,編譯器僅分配一塊內(nèi)存給它,用來保存指向數(shù)組實體的地址,如圖4-1所示。圖4-1聲明整型數(shù)組聲明之后進行內(nèi)存分配操作,也就是執(zhí)行上例中的第二行語句。這一行會開辟3個可供保存整數(shù)的內(nèi)存空間,并把此內(nèi)存空間的參考地址賦給score變量。其內(nèi)存分配的流程如圖4-2所示。圖4-2內(nèi)存分配的流程圖4-2中的內(nèi)存參考地址0X1000是假賦值,此值會因環(huán)境的不同而異。如第3章所述,數(shù)組屬于非基本數(shù)據(jù)類型,因此數(shù)組變量score所保存的并非數(shù)組的實體,而是數(shù)組實體的參考地址。除了用上例中的兩行程序來聲明并分配內(nèi)存給數(shù)組之外,也可以用較為簡潔的方式把兩行縮成一行來編寫,其格式如下:

數(shù)據(jù)類型數(shù)組名[]=new數(shù)據(jù)類型[個數(shù)]

上述格式會在聲明的同時分配一塊內(nèi)存空間,供該數(shù)組使用。下例聲明整型數(shù)組score并開辟可以保存11個整數(shù)的內(nèi)存給score變量。

intscore[]=newint[11]; //聲明一個元素個數(shù)為10的整型數(shù)組score,同時開辟一塊內(nèi)存空間供其使用

在Java中,由于整數(shù)數(shù)據(jù)類型所占用的空間為4字節(jié),而整型數(shù)組score可保存的元素有11個,所以上例中占用的內(nèi)存共有4?×?11?=?44字節(jié)。圖4-3將數(shù)組score用圖形來表示,讀者可以較為容易地理解數(shù)組的保存方式。圖4-3數(shù)組的保存方式4.1.2數(shù)組中元素的表示方法

要使用數(shù)組中的元素,可以利用索引來完成。Java的數(shù)組索引編號由0開始。例如數(shù)組score,score[0]?代表第1個元素,score[1]?代表第2個元素,score[9]?代表數(shù)組中的第10個元素(也就是最后一個元素)。圖4-4為score數(shù)組中元素的表示法及數(shù)組中元素的排列。圖4-4數(shù)組元素的表示及排列下面程序聲明了一個一維數(shù)組,其長度為3,利用for循環(huán)輸出數(shù)組的內(nèi)容后,再輸出數(shù)組的元素個數(shù)。

【例4-1】TestJava4_1.java。程序說明:

(1)第7行聲明整型數(shù)組a。

(2)第8行開辟了一塊內(nèi)存空間,以供整型數(shù)組a使用,其元素個數(shù)為3。

(3)第9~10行利用for循環(huán)輸出數(shù)組的內(nèi)容。由于程序中并未給數(shù)組元素賦值,因此輸出的結(jié)果都是0。

(4)第11行輸出數(shù)組的長度。此例中數(shù)組的長度是3,即代表數(shù)組元素的個數(shù)有3個。

要特別注意的是,在Java中取得數(shù)組的長度(也就是數(shù)組元素的個數(shù))可以利用“.length”完成,如下面的格式:

數(shù)組名.length

也就是說,若是要取得TestJava4_1中所聲明的數(shù)組a的元素個數(shù),只要在數(shù)組a的名稱后面加上“.length”即可,如下面的程序片段:

a.length; //取得數(shù)組的長度

4.1.3數(shù)組初值的賦值

如果要直接在聲明時就給數(shù)組賦初值,則可以利用大括號完成,只要在數(shù)組的聲明格式后面再加上初值的賦值即可,如下面的格式:

數(shù)據(jù)類型數(shù)組名[]={初值0,初值1,…,初值n}

在大括號內(nèi)的初值會依序指定給數(shù)組的第1,…,n+1個元素。此外,在聲明時,并不需要將數(shù)組元素的個數(shù)列出,編譯器會根據(jù)所給出的初值個數(shù)來判斷數(shù)組的長度。4.1.4與數(shù)組操作有關(guān)的API方法

在Java語言中提供了許多與數(shù)組操作有關(guān)的API方法,供開發(fā)人員使用。下面介紹兩種常用的數(shù)組操作方法:一個是數(shù)組的拷貝操作,另一個是數(shù)組的排序操作。其他操作請讀者自行查閱JDK幫助文檔。

【例4-3】TestJava4_3.java。案例1找出數(shù)組元素中的最大值與最小值

【案例描述】

編寫程序求得數(shù)組中的最大值和最小值。

【技術(shù)要點】

數(shù)組的索引就好像飯店房間的編號一樣,想要找到某個房間,就得先找到房間編號。

【代碼與注釋】

【例4-5】TestJava4_5.java?!境绦蛘f明】

(1)第6行聲明整數(shù)變量i作為循環(huán)控制變量及數(shù)組的索引。另外還聲明了存放最小值的變量min與最大值的變量max。

(2)第7行聲明整型數(shù)組A,其數(shù)組元素有5個,其值分別為74、48、30、17、62。

(3)第8行將min與max的初值設(shè)為數(shù)組的第一個元素。

(4)第10~17行逐一輸出數(shù)組中的內(nèi)容,并判斷數(shù)組中的最大值與最小值。

(5)第18~19行輸出比較后的最大值與最小值。將變量min與max的初值設(shè)成數(shù)組的第一個元素后,再逐一與數(shù)組中的各元素相比。若該元素比min小,則將該元素的值指定給min存放,使min的內(nèi)容保持最?。煌瑯拥?,若該元素比max大,則將該元素的值指定給max存放,使max的內(nèi)容保持最大。for循環(huán)執(zhí)行完,也就表示數(shù)組中所有的元素都已經(jīng)比較完畢,此時變量min與max的內(nèi)容就是最小值與最大值。

4.2二維數(shù)組

4.2.1二維數(shù)組的聲明與分配內(nèi)存

二維數(shù)組的聲明方式和一維數(shù)組類似,內(nèi)存分配也是用new這個關(guān)鍵字。其聲明與分配內(nèi)存的格式如下:

數(shù)據(jù)類型數(shù)組名[][]

數(shù)組名=new數(shù)組類型[行的個數(shù)][列的個數(shù)]

與一維數(shù)組不同的是,二維數(shù)組在分配內(nèi)存時必須告訴編譯器二維數(shù)組行與列的個數(shù)。因此在上述格式中,“行的個數(shù)”是告訴編譯器所聲明的數(shù)組有多少行,“列的個數(shù)”則是說明該數(shù)組有多少列。同樣地,可以用較為簡潔的方式來聲明數(shù)組,其格式如下:

數(shù)據(jù)類型數(shù)組名[][]=new數(shù)據(jù)類型[行的個數(shù)][列的個數(shù)];

若采用上述寫法,則在聲明的同時就開辟了一塊內(nèi)存空間,以供該數(shù)組使用。

上面的語句中,整型數(shù)據(jù)score可保存的元素有4×3=12個,而在Java中,int數(shù)據(jù)類型所占用的空間為4個字節(jié),因此該整型數(shù)組占用的內(nèi)存共為4?×?12=48個字節(jié)。

2.取得二維數(shù)組的行數(shù)與特定行的元素個數(shù)

在二維數(shù)組中,若要取得整個數(shù)組的行數(shù),或者某行元素的個數(shù),可利用“.length”來獲取,其語法格式如下:

數(shù)組名.length //取得數(shù)組的行數(shù)

數(shù)組名[行的索引].length //取得特定行元素的個數(shù)

也就是說,如要取得二維數(shù)組的行數(shù),只要用數(shù)組名加上“.length”即可;如要取得數(shù)組中特定行的元素個數(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個元素。

(3)第9~18行輸出數(shù)組里各元素的內(nèi)容,并進行成績匯總。

(4)第20行輸出sum的結(jié)果,即總銷售量。 4.3多維數(shù)組

要提高數(shù)組的維數(shù),只要在聲明數(shù)組時再加一組索引與中括號即可,所以三維數(shù)組的聲明為intA[][][],而四維數(shù)組為intA[][][][],以此類推。

使用多維數(shù)組時,輸入、輸出方式和一、二維數(shù)組相同,但是每多一維,嵌套循環(huán)的層數(shù)就必須多一層,所以維數(shù)越高的數(shù)組其復(fù)雜度也就越高。下面以三維數(shù)組為例,在聲明數(shù)組時即賦初值,再將其元素值輸出并計算總和。

【例4-7】TestJava4_7.java。 4.4方法

方法可以簡化程序結(jié)構(gòu),也可以節(jié)省編寫相同程序代碼的時間,達到程序模塊化的目的。在每一個類中出現(xiàn)的main()即是一個方法。使用方法來編寫程序代碼有相當多的好處,可簡化程序代碼,精簡重復(fù)的程序流程,并能把具有特定功能的程序代碼獨立出來,使程序的維護成本降低。

方法可用如下的語法來定義:4.4.1方法操作的簡單范例

下面的程序在顯示器上先輸出19個星號“*”,換行之后再輸出“ILikeJava!”這一字符串,最后輸出19個星號。該程序是一個簡單的方法操作范例。

【例4-8】TestJava4_8.java。從本程序中可以很清楚地看出,當調(diào)用方法時,程序會跳到被調(diào)用的方法中去運行,結(jié)束后則返回原調(diào)用處繼續(xù)運行。在TestJava4_8中,調(diào)用與運行star()方法的流程如圖4-5所示。圖4-5調(diào)用與運行star()方法的流程4.4.2方法的參數(shù)與返回值

如果方法有返回值,則在聲明方法之前就必須指定返回值的數(shù)據(jù)類型;如果有參數(shù)要傳遞到方法內(nèi),則在方法的括號內(nèi)必須填上該參數(shù)及其類型。TestJava4_9是用來說明方法的使用的另一個例子,它可以接收一個整數(shù)參數(shù)n,輸出2×n個星號后,返回整數(shù)2×n。

【例4-9】TestJava4_9。在TestJava4_9中,因為star()傳遞整數(shù)值,所以第10行的聲明要在star()方法之前加上int關(guān)鍵字。此外,因要傳入一個整數(shù)給star(),所以star()的括號內(nèi)也要注明參數(shù)的名稱與數(shù)據(jù)類型。如果要傳遞一個參數(shù),則只要在方法的括號內(nèi)填上所要傳入的參數(shù)名稱與類型即可。下例是一個關(guān)于計算長方形對角線長度的例子,其中show_length()方法可接收長方形的寬與高,計算后返回對角線的長度。

【例4-10】TestJava4_10.java。輸出結(jié)果:

對角線長度=29.068883707497267

TestJava4_10的第7行調(diào)用show_length(22,19),把整數(shù)22和19傳入show_length()方法中。第12行則利用Math類中的sqrt()方法計算對角線長度。sqrt(n)的作用是將參數(shù)n開根號。因sqrt()的返回值是double類型,所以show_length()的返回值也是double類型。

4.4.3方法的重載

方法的重載就是在同一個類中允許同時存在一個以上同名方法,只要它們的參數(shù)個數(shù)或類型不同即可。在這種情況下,該方法就叫被重載,這個過程稱為方法的重載。

【例4-11】TestJava4_11.java。4.4.4將數(shù)組傳遞到方法中

1.傳遞一維數(shù)組

要傳遞一維數(shù)組到方法中,只要指明傳入的參數(shù)是一個數(shù)組即可。下例傳遞一維數(shù)組到largest()方法,當largest()接收到此數(shù)組時,便會把數(shù)組的最大值輸出。

【例4-12】TestJava4_12.java。輸出結(jié)果:

最大的數(shù)=22

上述程序中,第9~16行聲明largest()方法,并將一維數(shù)組作為該方法的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論