




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章數組與方法4.1一維數組
4.2二維數組
4.3多維數組
4.4方法
4.1一維數組
一維數組中可以存放多個數據,但這些數據的類型應該是完全相同的。
4.1.1一維數組的聲明與內存的分配
要使用Java的數組,必須經過兩個步驟:
(1)聲明數組。
(2)給該數組分配內存。
這兩個步驟的語法格式如下:
數據類型數組名[] //聲明一維數組
數組名=new數據類型[個數]; //給數組分配內存數組的聲明格式中,“數據類型”用于聲明數組元素的數據類型。常見的數據類型有整型、浮點型與字符型等?!皵到M名”用來統(tǒng)一這組相同數據類型的元素的名稱,其命名規(guī)則和變量的相同,建議讀者使用有意義的名稱為數組命名。聲明數組后,接下來便是配置數組所需的內存,其中“個數”是告訴編譯器所聲明的數組要存放多少個元素,而“new”則是命令編譯器根據括號里的個數在內存中開辟一塊內存供該數組使用。下面是聲明一維數組并給該數組分配內存的范例:
intscore[]; //聲明整型數組score
score=newint[3]; //為整型數組score分配內存空間,其元素個數為3上面范例第一行中,當聲明一個整型數組score時,score可視為數組類型的變量,此時這個變量并沒有包含任何內容,編譯器僅分配一塊內存給它,用來保存指向數組實體的地址,如圖4-1所示。圖4-1聲明整型數組聲明之后進行內存分配操作,也就是執(zhí)行上例中的第二行語句。這一行會開辟3個可供保存整數的內存空間,并把此內存空間的參考地址賦給score變量。其內存分配的流程如圖4-2所示。圖4-2內存分配的流程圖4-2中的內存參考地址0X1000是假賦值,此值會因環(huán)境的不同而異。如第3章所述,數組屬于非基本數據類型,因此數組變量score所保存的并非數組的實體,而是數組實體的參考地址。除了用上例中的兩行程序來聲明并分配內存給數組之外,也可以用較為簡潔的方式把兩行縮成一行來編寫,其格式如下:
數據類型數組名[]=new數據類型[個數]
上述格式會在聲明的同時分配一塊內存空間,供該數組使用。下例聲明整型數組score并開辟可以保存11個整數的內存給score變量。
intscore[]=newint[11]; //聲明一個元素個數為10的整型數組score,同時開辟一塊內存空間供其使用
在Java中,由于整數數據類型所占用的空間為4字節(jié),而整型數組score可保存的元素有11個,所以上例中占用的內存共有4?×?11?=?44字節(jié)。圖4-3將數組score用圖形來表示,讀者可以較為容易地理解數組的保存方式。圖4-3數組的保存方式4.1.2數組中元素的表示方法
要使用數組中的元素,可以利用索引來完成。Java的數組索引編號由0開始。例如數組score,score[0]?代表第1個元素,score[1]?代表第2個元素,score[9]?代表數組中的第10個元素(也就是最后一個元素)。圖4-4為score數組中元素的表示法及數組中元素的排列。圖4-4數組元素的表示及排列下面程序聲明了一個一維數組,其長度為3,利用for循環(huán)輸出數組的內容后,再輸出數組的元素個數。
【例4-1】TestJava4_1.java。程序說明:
(1)第7行聲明整型數組a。
(2)第8行開辟了一塊內存空間,以供整型數組a使用,其元素個數為3。
(3)第9~10行利用for循環(huán)輸出數組的內容。由于程序中并未給數組元素賦值,因此輸出的結果都是0。
(4)第11行輸出數組的長度。此例中數組的長度是3,即代表數組元素的個數有3個。
要特別注意的是,在Java中取得數組的長度(也就是數組元素的個數)可以利用“.length”完成,如下面的格式:
數組名.length
也就是說,若是要取得TestJava4_1中所聲明的數組a的元素個數,只要在數組a的名稱后面加上“.length”即可,如下面的程序片段:
a.length; //取得數組的長度
4.1.3數組初值的賦值
如果要直接在聲明時就給數組賦初值,則可以利用大括號完成,只要在數組的聲明格式后面再加上初值的賦值即可,如下面的格式:
數據類型數組名[]={初值0,初值1,…,初值n}
在大括號內的初值會依序指定給數組的第1,…,n+1個元素。此外,在聲明時,并不需要將數組元素的個數列出,編譯器會根據所給出的初值個數來判斷數組的長度。4.1.4與數組操作有關的API方法
在Java語言中提供了許多與數組操作有關的API方法,供開發(fā)人員使用。下面介紹兩種常用的數組操作方法:一個是數組的拷貝操作,另一個是數組的排序操作。其他操作請讀者自行查閱JDK幫助文檔。
【例4-3】TestJava4_3.java。案例1找出數組元素中的最大值與最小值
【案例描述】
編寫程序求得數組中的最大值和最小值。
【技術要點】
數組的索引就好像飯店房間的編號一樣,想要找到某個房間,就得先找到房間編號。
【代碼與注釋】
【例4-5】TestJava4_5.java?!境绦蛘f明】
(1)第6行聲明整數變量i作為循環(huán)控制變量及數組的索引。另外還聲明了存放最小值的變量min與最大值的變量max。
(2)第7行聲明整型數組A,其數組元素有5個,其值分別為74、48、30、17、62。
(3)第8行將min與max的初值設為數組的第一個元素。
(4)第10~17行逐一輸出數組中的內容,并判斷數組中的最大值與最小值。
(5)第18~19行輸出比較后的最大值與最小值。將變量min與max的初值設成數組的第一個元素后,再逐一與數組中的各元素相比。若該元素比min小,則將該元素的值指定給min存放,使min的內容保持最??;同樣地,若該元素比max大,則將該元素的值指定給max存放,使max的內容保持最大。for循環(huán)執(zhí)行完,也就表示數組中所有的元素都已經比較完畢,此時變量min與max的內容就是最小值與最大值。
4.2二維數組
4.2.1二維數組的聲明與分配內存
二維數組的聲明方式和一維數組類似,內存分配也是用new這個關鍵字。其聲明與分配內存的格式如下:
數據類型數組名[][]
數組名=new數組類型[行的個數][列的個數]
與一維數組不同的是,二維數組在分配內存時必須告訴編譯器二維數組行與列的個數。因此在上述格式中,“行的個數”是告訴編譯器所聲明的數組有多少行,“列的個數”則是說明該數組有多少列。同樣地,可以用較為簡潔的方式來聲明數組,其格式如下:
數據類型數組名[][]=new數據類型[行的個數][列的個數];
若采用上述寫法,則在聲明的同時就開辟了一塊內存空間,以供該數組使用。
上面的語句中,整型數據score可保存的元素有4×3=12個,而在Java中,int數據類型所占用的空間為4個字節(jié),因此該整型數組占用的內存共為4?×?12=48個字節(jié)。
2.取得二維數組的行數與特定行的元素個數
在二維數組中,若要取得整個數組的行數,或者某行元素的個數,可利用“.length”來獲取,其語法格式如下:
數組名.length //取得數組的行數
數組名[行的索引].length //取得特定行元素的個數
也就是說,如要取得二維數組的行數,只要用數組名加上“.length”即可;如要取得數組中特定行的元素個數,則必須在數組名后面加上該行的索引值,再加上“.length”。4.2.2二維數組元素的引用及訪問
二維數組元素的輸入、輸出方式與一維數組相同。
【例4-6】TestJava4_6.java。程序說明:
(1)第6行聲明整數變量i、j作為外層與內層循環(huán)控制變量及數組的索引,i控制行的元素,j控制列的元素,而sum則用來存放所有數組元素值的和,也就是總成績。
(2)第7行聲明一整型數組num,并為數組元素賦初值,該整型數組共有8個元素。
(3)第9~18行輸出數組里各元素的內容,并進行成績匯總。
(4)第20行輸出sum的結果,即總銷售量。 4.3多維數組
要提高數組的維數,只要在聲明數組時再加一組索引與中括號即可,所以三維數組的聲明為intA[][][],而四維數組為intA[][][][],以此類推。
使用多維數組時,輸入、輸出方式和一、二維數組相同,但是每多一維,嵌套循環(huán)的層數就必須多一層,所以維數越高的數組其復雜度也就越高。下面以三維數組為例,在聲明數組時即賦初值,再將其元素值輸出并計算總和。
【例4-7】TestJava4_7.java。 4.4方法
方法可以簡化程序結構,也可以節(jié)省編寫相同程序代碼的時間,達到程序模塊化的目的。在每一個類中出現的main()即是一個方法。使用方法來編寫程序代碼有相當多的好處,可簡化程序代碼,精簡重復的程序流程,并能把具有特定功能的程序代碼獨立出來,使程序的維護成本降低。
方法可用如下的語法來定義:4.4.1方法操作的簡單范例
下面的程序在顯示器上先輸出19個星號“*”,換行之后再輸出“ILikeJava!”這一字符串,最后輸出19個星號。該程序是一個簡單的方法操作范例。
【例4-8】TestJava4_8.java。從本程序中可以很清楚地看出,當調用方法時,程序會跳到被調用的方法中去運行,結束后則返回原調用處繼續(xù)運行。在TestJava4_8中,調用與運行star()方法的流程如圖4-5所示。圖4-5調用與運行star()方法的流程4.4.2方法的參數與返回值
如果方法有返回值,則在聲明方法之前就必須指定返回值的數據類型;如果有參數要傳遞到方法內,則在方法的括號內必須填上該參數及其類型。TestJava4_9是用來說明方法的使用的另一個例子,它可以接收一個整數參數n,輸出2×n個星號后,返回整數2×n。
【例4-9】TestJava4_9。在TestJava4_9中,因為star()傳遞整數值,所以第10行的聲明要在star()方法之前加上int關鍵字。此外,因要傳入一個整數給star(),所以star()的括號內也要注明參數的名稱與數據類型。如果要傳遞一個參數,則只要在方法的括號內填上所要傳入的參數名稱與類型即可。下例是一個關于計算長方形對角線長度的例子,其中show_length()方法可接收長方形的寬與高,計算后返回對角線的長度。
【例4-10】TestJava4_10.java。輸出結果:
對角線長度=29.068883707497267
TestJava4_10的第7行調用show_length(22,19),把整數22和19傳入show_length()方法中。第12行則利用Math類中的sqrt()方法計算對角線長度。sqrt(n)的作用是將參數n開根號。因sqrt()的返回值是double類型,所以show_length()的返回值也是double類型。
4.4.3方法的重載
方法的重載就是在同一個類中允許同時存在一個以上同名方法,只要它們的參數個數或類型不同即可。在這種情況下,該方法就叫被重載,這個過程稱為方法的重載。
【例4-11】TestJava4_11.java。4.4.4將數組傳遞到方法中
1.傳遞一維數組
要傳遞一維數組到方法中,只要指明傳入的參數是一個數組即可。下例傳遞一維數組到largest()方法,當largest()接收到此數組時,便會把數組的最大值輸出。
【例4-12】TestJava4_12.java。輸出結果:
最大的數=22
上述程序中,第9~16行聲明largest()方法,并將一維數組作為該方法的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 部隊三防四反教育課件
- 天津市河西區(qū)2024-2025 學年九年級下學期結課質量調查物理試卷(含答案)
- 湖南省永州市祁陽市浯溪第二中學2024-2025學年九年級下學期第一次月考道德與法治試卷(含答案)
- 2025年貴州省貴陽市花溪區(qū)4月中考適應性訓練道德與法治試題(含答案)
- (護士)專業(yè)實務??荚囶}(含參考答案)
- 幼兒心理學教案7
- 2024-2025學年八年級物理上冊 3.2 熔化和凝固教學設計(新版)新人教版
- 一年級道德與法治上冊 第三單元 讓我最溫暖的地方 我是家里的好幫手教學設計 未來版
- 2025至2030年中國高性能錳鋅鐵氧體元件行業(yè)發(fā)展研究報告
- 2025至2030年中國阻燃毯行業(yè)發(fā)展研究報告001
- 2025年山東省濟南市市中區(qū)中考物理一模試卷(無答案)
- 商業(yè)秘密保護:內外勾結型侵犯行為的司法認定分析
- 2025年國家公務員錄用考試公共基礎知識預測押題試卷及答案(共七套)
- 2025-2030中國兒童服裝行業(yè)市場發(fā)展分析及投資前景預測研究報告
- 部編版語文教材培訓講座-口語交際
- 2025年全國中小學生安全教育日專題
- 2025年工程力學筆試試題及答案
- 2025太陽能光熱發(fā)電站熔融鹽儲熱系統(tǒng)技術
- JGJ33-2012 建筑機械使用安全技術規(guī)程
- DB37T 5157-2020 住宅工程質量常見問題防控技術標準
- 二年級乘除法口訣專項練習1000題
評論
0/150
提交評論