![java-萬(wàn)軍洲老師-第3章數(shù)組與字符串_第1頁(yè)](http://file4.renrendoc.com/view/13183f584de4fa1c167abaa218ebaa0c/13183f584de4fa1c167abaa218ebaa0c1.gif)
![java-萬(wàn)軍洲老師-第3章數(shù)組與字符串_第2頁(yè)](http://file4.renrendoc.com/view/13183f584de4fa1c167abaa218ebaa0c/13183f584de4fa1c167abaa218ebaa0c2.gif)
![java-萬(wàn)軍洲老師-第3章數(shù)組與字符串_第3頁(yè)](http://file4.renrendoc.com/view/13183f584de4fa1c167abaa218ebaa0c/13183f584de4fa1c167abaa218ebaa0c3.gif)
![java-萬(wàn)軍洲老師-第3章數(shù)組與字符串_第4頁(yè)](http://file4.renrendoc.com/view/13183f584de4fa1c167abaa218ebaa0c/13183f584de4fa1c167abaa218ebaa0c4.gif)
![java-萬(wàn)軍洲老師-第3章數(shù)組與字符串_第5頁(yè)](http://file4.renrendoc.com/view/13183f584de4fa1c167abaa218ebaa0c/13183f584de4fa1c167abaa218ebaa0c5.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章數(shù)組與字符串在程序設(shè)計(jì)中,數(shù)組類型是一種表示數(shù)據(jù)集合的常用手段,字符串是一種表示姓名、提示信息等類似數(shù)據(jù)的常見形式。在Java語(yǔ)言中,為數(shù)組類型與字符串都定義了相應(yīng)的標(biāo)準(zhǔn)類,Arrays是實(shí)現(xiàn)數(shù)組類型的組織與操作的類,String是實(shí)現(xiàn)字符串存儲(chǔ)與操作的類。這樣既體現(xiàn)了Java面向?qū)ο蟮耐暾裕衷鰪?qiáng)了這兩種數(shù)據(jù)的操作能力,為簡(jiǎn)化程序設(shè)計(jì)過(guò)程,提高程序的可靠性提供了可能性。
3.1數(shù)組類型根據(jù)數(shù)據(jù)類型的構(gòu)成方式不同,可以將所有的數(shù)據(jù)類型分成兩個(gè)類別:簡(jiǎn)單數(shù)據(jù)類型和復(fù)合數(shù)據(jù)類型。所謂簡(jiǎn)單是指用于組織單值數(shù)據(jù)的數(shù)據(jù)類型;所謂復(fù)合是指組織數(shù)據(jù)集合的數(shù)據(jù)類型.由惟一確定某個(gè)數(shù)組元素所需要的下標(biāo)個(gè)數(shù)可以將數(shù)組分為一維數(shù)組、二維數(shù)組及多維數(shù)組。
3.1.1一維數(shù)組所謂一維數(shù)組是指每個(gè)元素由一個(gè)下標(biāo)值惟一確定的數(shù)組類型。這是一種使用十分頻繁的數(shù)據(jù)類型,它的特征明顯、操作方便、易于理解,是每個(gè)程序設(shè)計(jì)者在編寫程序的過(guò)程中無(wú)法回避使用的一種數(shù)據(jù)類型。1.一維數(shù)組的定義定義數(shù)組型變量的語(yǔ)法格式為: 數(shù)組元素類型[]數(shù)組型變量名;或者數(shù)組元素類型數(shù)組型變量名[];“數(shù)組元素類型”為組成一維數(shù)組的元素類型,“數(shù)組型變量名”為定義的數(shù)組型變量名稱,它應(yīng)該符合Java語(yǔ)言的標(biāo)識(shí)符命名規(guī)則,建議遵守Java語(yǔ)言的標(biāo)識(shí)符命名規(guī)范。
int[]intArray;或者intintArray[];float[]floatArray;或者floatfloatArray[];String[]stringArray;或者StringstringArray[];建議使用前一種格式風(fēng)格,這種格式風(fēng)格的好處是將數(shù)據(jù)類型集中表示,即前面是數(shù)據(jù)類型,后面是變量名稱,而后面一種格式風(fēng)格的數(shù)據(jù)類型被變量名稱分隔為前后兩個(gè)部分。Java語(yǔ)言保留這種定義格式風(fēng)格完全是為了尊重人們的使用習(xí)慣。2.一維數(shù)組的創(chuàng)建一個(gè)數(shù)組可以包含多個(gè)元素,所含的元素?cái)?shù)目被稱為數(shù)組的長(zhǎng)度,數(shù)組中也可以沒(méi)有任何元素,此時(shí)稱為空數(shù)組。正因?yàn)槿绱?,在?chuàng)建數(shù)組時(shí)需要給出組成數(shù)組的元素?cái)?shù)目。下面是利用new運(yùn)算符創(chuàng)建數(shù)組的語(yǔ)法格式:new數(shù)組元素類型[數(shù)組元素?cái)?shù)目];“數(shù)組元素類型”為組成數(shù)組的元素類型,“數(shù)組元素?cái)?shù)目”為組成數(shù)組的元素?cái)?shù)目,這個(gè)值要求大于或等于零。
intArray由100個(gè)int類型的元素組成intArray=newint[100];floatArray由50個(gè)float類型的元素組成floatArray=newfloat[50];stringArray由10個(gè)String類型的元素組成stringArray=newString[10];也可以將數(shù)組的定義與創(chuàng)建合并char[]name=newchar[30];doubledoubleData[]=newdouble[10];0123426272829name0123456789doubleData3.一維數(shù)組的初始化在創(chuàng)建數(shù)組的同時(shí),為數(shù)組元素賦予初始值的過(guò)程被稱為數(shù)組的初始化。int[]intArray={10,20,30,40,50,60,70,80,90,100};操作過(guò)程:首先為intArray數(shù)組分配10個(gè)int型元素所需要占用的存儲(chǔ)空間,然后將初始值10,20,30,40,50,60,70,80,90,100依次賦給intArray[0]~intArray[9]。3.一維數(shù)組的初始化String[]name={"zhang","wang","li","zhao"};由于在Java語(yǔ)言中字符串屬于String類對(duì)象,所以這條語(yǔ)句的操作過(guò)程會(huì)稍復(fù)雜一些。首先,要為4個(gè)String型引用分配存儲(chǔ)空間,然后再根據(jù)4個(gè)初始值為4個(gè)字符串分配存儲(chǔ)空間,最后將初始值"zhang","wang","li","zhao"的引用依次賦給name[0]~name[3]。4.一維數(shù)組元素的訪問(wèn)創(chuàng)建數(shù)組后,就可以通過(guò)引用訪問(wèn)數(shù)組元素以達(dá)到對(duì)數(shù)組操作的目的。Java訪問(wèn)數(shù)組元素的格式為:arrayName[下標(biāo)表達(dá)式]
在運(yùn)行程序時(shí),Java語(yǔ)言會(huì)嚴(yán)格地檢查每個(gè)“下標(biāo)表達(dá)式”的取值范圍,一旦發(fā)生越界就會(huì)拋出ArrayIndexOutOfBoundsException異常。當(dāng)需要對(duì)數(shù)組中的每個(gè)元素進(jìn)行操作時(shí),可以利用數(shù)組對(duì)象中封裝的length屬性獲得當(dāng)前數(shù)組中包含的元素?cái)?shù)目。intvalue[]={10,9,40,20,12,8,9};for(inti=0,sum=0;i<value.length;i++){
sum+=value[i];}在for語(yǔ)句中,將循環(huán)上界設(shè)定為value.length的好處是:當(dāng)value數(shù)組的長(zhǎng)度發(fā)生變化時(shí)不需要修改程序的其他地方。在JDK5.0版本中增加了一個(gè)專門用于操作數(shù)據(jù)集合的循環(huán)流程控制語(yǔ)句foreach,其功能更加強(qiáng)大、書寫更加簡(jiǎn)潔。這種語(yǔ)句的書寫格式為:for(數(shù)組元素型變量:數(shù)組型變量)語(yǔ)句;“數(shù)組元素型變量”是與數(shù)組元素同類型的變量,“數(shù)組型變量”是一個(gè)表示數(shù)組引用的變量。例如,可以將上述數(shù)組元素累加的程序段改寫成:intsum=0;for(intv:value){ sum+=v;}這條語(yǔ)句的執(zhí)行過(guò)程可以描述為:循環(huán)訪問(wèn)value數(shù)組中的每個(gè)元素并將其內(nèi)容累加到變量sum中。5.一維數(shù)組的復(fù)制在Java語(yǔ)言中,數(shù)組型變量可以實(shí)現(xiàn)兩種形式的復(fù)制操作。第一種復(fù)制操作被稱為數(shù)組引用的復(fù)制int[]firstArray={10,20,30,40,50,60};int[]secondArray;secondArray=firstArray;這條賦值語(yǔ)句的執(zhí)行效果是將firstArray的引用信息賦給secondArray,此時(shí)firstArray與secondArray共同引用一個(gè)數(shù)組。arraycopy是System類中的一個(gè)靜態(tài)方法。定義格式為:voidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)其中,src為被拷貝的原始數(shù)組,srcPos為原始數(shù)組中將要拷貝的數(shù)組元素的起始位置,dest為目標(biāo)數(shù)組,destPos為拷貝到目標(biāo)數(shù)組中后放置數(shù)組元素的起始位置,length為拷貝的數(shù)組元素?cái)?shù)目。int[]arraySrc={5,10,15,20,25,30,35,40,45,50};int[]arrayDest=newint[10];執(zhí)行語(yǔ)句:System.arraycopy(arraySrc,0,arrayDest,0,10);舉例:假設(shè)有n個(gè)候選人參加學(xué)生會(huì)主席的競(jìng)選,最后將根據(jù)學(xué)生的投票情況決定學(xué)生會(huì)主席的獲勝人選。編寫一個(gè)程序,完成選票的統(tǒng)計(jì)工作,并顯示最終的獲勝者。分析:為了利用程序解決這個(gè)問(wèn)題,假設(shè)為每位候選人編號(hào)1...n。如果希望為某位候選人投票時(shí),只需要從鍵盤上輸入這位候選人的編號(hào)即可。每位候選人所獲的選票的存儲(chǔ)在一個(gè)含有n個(gè)元素的一維數(shù)組中。由于含有n個(gè)元素的一維數(shù)組的下標(biāo)范圍在0...n-1之間,所以,在程序?qū)崿F(xiàn)中,需要將候選人的編號(hào)與數(shù)組元素的下標(biāo)做一個(gè)映射,即1號(hào)候選人在數(shù)組中用下標(biāo)0表示,2號(hào)候選人在數(shù)組中用下標(biāo)1表示,依此類推,n號(hào)候選人在數(shù)組中用下標(biāo)n-1表示。
在Java語(yǔ)言中,一維數(shù)組的元素可以屬于任意類型,包括基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。也就是說(shuō),一維數(shù)組的元素又可以是一維數(shù)組類型,這就支持了二維數(shù)組,乃至多維數(shù)組的概念。由于可以借助于二維數(shù)組表示具有二維關(guān)系的數(shù)據(jù),所以它的應(yīng)用十分廣泛。3.1.2二維數(shù)組1.二維數(shù)組的定義與創(chuàng)建Java語(yǔ)言規(guī)定,二維數(shù)組的定義格式為:數(shù)組元素類型[][]數(shù)組型變量名;或者數(shù)組元素類型數(shù)組型變量名[][];或者數(shù)組元素類型[]數(shù)組型變量名[];“數(shù)組元素類型”為二維數(shù)組的元素類型,“數(shù)組型變量名”為二維數(shù)組型變量名稱。int[][]intArray;floatfloatArray[][];double[]doubleArray[];在這3種定義格式中,建議使用第一種格式。第二種格式完全是為了尊重那些習(xí)慣使用C/C++定義格式的人們而保留的,第三種格式清晰度較差,不提倡使用。創(chuàng)建二維數(shù)組的格式為:new數(shù)組元素類型[行數(shù)][列數(shù)];其中,“數(shù)組元素類型”為二維數(shù)組元素的類型,“行數(shù)”與“列數(shù)”表明了陳列在行方向與列方向的元素?cái)?shù)量。例如,intArray=newint[10][5];floatArray=newfloat[3][4];int[][]intArray=newint[10][5];等價(jià)于:intArray=newint[10][];for(inti=0;i<10;i++){intArray[i]=newint[5];}每行元素個(gè)數(shù)不同floatArray=newfloat[5][];for(inti=0;i<5;i++){floatArray[i]=newfloat[i+1];}2.二維數(shù)組的初始化int[][]intArray={{1,2,3,4},{5,6,7,8},{9,10,11,12}};執(zhí)行效果:首先創(chuàng)建二維數(shù)組,然后,將第1個(gè)括號(hào)中的3個(gè)數(shù)值分別賦給第1行的3個(gè)元素;再將第2個(gè)括號(hào)中的3個(gè)數(shù)值分別賦給第2行的3個(gè)元素;最后將第3個(gè)括號(hào)中的3個(gè)數(shù)值分別賦給第3行的3個(gè)元素。初始化后的數(shù)組元素狀態(tài)為:3.二維數(shù)組元素的訪問(wèn)創(chuàng)建二維數(shù)組之后,可以通過(guò)引用型的二維數(shù)組變量對(duì)數(shù)組元素進(jìn)行操作了。二維數(shù)組必須用兩個(gè)下標(biāo)惟一地確定元素,第一個(gè)下標(biāo)為行下標(biāo),第二個(gè)下標(biāo)為列下標(biāo),下標(biāo)的起始編號(hào)從0開始。intintArray[]=newint[5][4];
舉例:利用二維數(shù)組表示矩陣,并實(shí)現(xiàn)兩個(gè)矩陣相乘的操作。矩陣可以用來(lái)表示統(tǒng)計(jì)數(shù)據(jù)等方面的各種有關(guān)聯(lián)的數(shù)據(jù)。在數(shù)學(xué)上,矩陣可以是由方程組的系數(shù)及常數(shù)構(gòu)成的方陣。下面給出一個(gè)方程組與之對(duì)應(yīng)的矩陣表示。在矩陣的運(yùn)算中,要求兩個(gè)相乘的矩陣必須滿足第1個(gè)矩陣的列數(shù)等于第2個(gè)矩陣的行數(shù)。即對(duì)于Am1×n1和Bm2×n2,要求n1=m2,且結(jié)果矩陣C的行列數(shù)為m1×n2,其中的每個(gè)元素內(nèi)容為publicstaticvoidenterMatrix(int[][]m,introw,intcol){//輸入矩陣
for(inti=0;i<row;i++){for(intj=0;j<col;j++){m[i][j]=(int)Math.round(Math.random()*10);}}}publicstaticvoidprintMatrix(int[][]m,introw,intcol){//顯示矩陣
System.out.println();for(inti=0;i<row;i++){for(intj=0;j<col;j++){System.out.printf("%4d",m[i][j]);}System.out.println();}System.out.println();}publicstaticvoidMulMatrix(int[][]a,introw1,intcol1,int[][]b,introw2,intcol2,int[][]c){//兩個(gè)矩陣相乘for(inti=0;i<row1;i++){for(intj=0;j<col2;j++){c[i][j]=0;for(intk=0;k<col1;k++){c[i][j]+=a[i][k]*b[k][j];}}}}3.2字符串與String類在Java語(yǔ)言中提供了兩種字符串:一類是String標(biāo)準(zhǔn)類實(shí)現(xiàn)的字符串常量;另一類是StringBuffer標(biāo)準(zhǔn)類實(shí)現(xiàn)的可編輯修改的字符串。與C語(yǔ)言一樣,Java語(yǔ)言中的字符串直接量使用雙引號(hào)將字符序列括在其中。"thisisastringliteral!"這樣書寫的直接量將屬于String類。除了直接書寫字符串直接量以外,還可以將某個(gè)字符串存儲(chǔ)在String的類對(duì)象中。由于String類提供了很多對(duì)字符串常量操作的成員方法,所以,這樣做既便于字符串的重復(fù)利用,又可以提高應(yīng)用字符串的控制能力。String類被定義在java.lang包中。使用String類表示字符串需要經(jīng)過(guò)定義、創(chuàng)建、初始化和訪問(wèn)幾個(gè)階段。定義一個(gè)String類對(duì)象的語(yǔ)法格式為:String字符串變量名;其中,String為類名,
“字符串變量名”為對(duì)象名。
需要注意,這里定義的字符串對(duì)象只是一個(gè)引用型變量,需要按照下列格式創(chuàng)建及初始化對(duì)象。字符串變量名=字符串值;或字符串變量名=newString(字符串值);“字符串變量名”為引用型的String類對(duì)象,“字符串值”為字符串直接量或另外一個(gè)引用型的String類對(duì)象。Stringstr1,str2,str3;str1="Thisisastring";str2=newString("Thisisastring");str3=str1;在使用Sting類對(duì)象時(shí)需要注意幾點(diǎn):在Java語(yǔ)言中,字符串直接量中的每個(gè)字符使用Unicode編碼,占用兩個(gè)字節(jié)。如果定義String類對(duì)象之后,沒(méi)有引用任何一個(gè)字符串,就應(yīng)該賦予null。String類對(duì)象所引用的字符串是常量,不能對(duì)其字符串內(nèi)容進(jìn)行修改。String類提供了很多成員方法,可以通過(guò)這些方法更方便、靈活地使用字符串。
舉例:判斷給定的字符串是否為回文字符串。所謂回文字符串是指將字符串逆置后與原字符串相同。例如,“ABCDCBA”逆置后還是“ABCDCBA”,這是一個(gè)回文字符串;但“Program”逆置后為“margorP”,與原字符串不相同,這不是回文字符串。
publicstaticbooleanisPalindrome(Stringstr){//判斷str是否為回文字符串
intlen=str.length();//返回字符串長(zhǎng)度
for(intindex=0;index<len/2-1;index++){if(str.charAt(index)!=str.charAt(len-index-1)){//對(duì)稱的兩個(gè)字符比較
returnfalse;}}returntrue;}3.3數(shù)組操作與Arrays類應(yīng)用Arrays是Java類庫(kù)提供的一個(gè)位于java.util包中的標(biāo)準(zhǔn)類,其中包含了許多靜態(tài)成員方法,通過(guò)它們可以方便地對(duì)數(shù)組進(jìn)行排序、比較與填充等一系列操作,由于這些成員方法都是經(jīng)過(guò)精心設(shè)計(jì)、嚴(yán)格檢測(cè),所以,這樣不但可以大大地減輕程序設(shè)計(jì)人員的負(fù)擔(dān),還可以提高程序的質(zhì)量、增加程序的清晰度與優(yōu)化程序的執(zhí)行效率。3.4綜合應(yīng)用舉例舉例:隨機(jī)產(chǎn)生若干個(gè)整數(shù),并采用選擇排序的算法,按照從大到小重新進(jìn)行排列。問(wèn)題分析:這是一的典型的一維數(shù)組問(wèn)題。為了展示一維數(shù)組的操作方式,在這個(gè)實(shí)例中,自定義選擇排序的成員方法。設(shè)計(jì)說(shuō)明:設(shè)計(jì)三個(gè)成員方法,一個(gè)用于生成一維數(shù)組的內(nèi)容;一個(gè)用于顯示一維數(shù)組的內(nèi)容;另一個(gè)用于實(shí)現(xiàn)選擇排序算法。由于在排序過(guò)程中,隨時(shí)需要查看或操作每個(gè)整數(shù),所以,利用一維數(shù)組將參加排序的所有整數(shù)保存起來(lái)是一種最直接且簡(jiǎn)易的方法。
publicstaticvoidsort(int[]data){//選擇排序
intindex;for(inti=0;i<data.length-1;i++){//執(zhí)行n-1趟選擇操作
index=i;for(intj=i+1;j<data.length;
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年柴油發(fā)電組項(xiàng)目可行性研究報(bào)告
- 2025年旋軸項(xiàng)目可行性研究報(bào)告
- 2025年干衣機(jī)電動(dòng)機(jī)項(xiàng)目可行性研究報(bào)告
- 2025年四通遙控車項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)交換機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 廣州廣東廣州市黃埔區(qū)衛(wèi)生健康局所屬事業(yè)單位廣州開發(fā)區(qū)醫(yī)院招聘73人筆試歷年參考題庫(kù)附帶答案詳解
- 2025至2030年自動(dòng)裝配機(jī)械配件項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年中國(guó)自動(dòng)化螺釘緊固系統(tǒng)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)穿心電容數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年平紋雙彈布項(xiàng)目投資價(jià)值分析報(bào)告
- 第八節(jié) 元代散曲
- 質(zhì)量體系工程師崗位說(shuō)明書
- 三年級(jí)上語(yǔ)文開學(xué)第一課
- 烹飪刀工與原料成型技術(shù)課件
- 消防設(shè)施維護(hù)與日常檢查培訓(xùn)講義
- 最新安全生產(chǎn)管理教材電子版
- 良性陣發(fā)性位置性眩暈完整版本課件
- 典當(dāng)業(yè)務(wù)計(jì)劃方案
- 老化箱點(diǎn)檢表A4版本
- 音標(biāo)教學(xué)課件(共73張PPT)
- 2012數(shù)據(jù)結(jié)構(gòu)英文試卷A及答案
評(píng)論
0/150
提交評(píng)論