《Java程序設(shè)計(jì)案例教程》第04章 數(shù)組_第1頁
《Java程序設(shè)計(jì)案例教程》第04章 數(shù)組_第2頁
《Java程序設(shè)計(jì)案例教程》第04章 數(shù)組_第3頁
《Java程序設(shè)計(jì)案例教程》第04章 數(shù)組_第4頁
《Java程序設(shè)計(jì)案例教程》第04章 數(shù)組_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

程序設(shè)計(jì)第4章數(shù)組2目錄

4.1

一維數(shù)組的定義與使用

4.2二維數(shù)組的定義與使用

4.3數(shù)組的常用方法

一維數(shù)組1、一維數(shù)組的聲明2、一維數(shù)組的創(chuàng)建3、一維數(shù)組的初始化4、一維數(shù)組的引用44.1

一維數(shù)組的定義與使用4.1.1一維數(shù)組的定義1、一維數(shù)組的聲明數(shù)據(jù)類型[]

數(shù)組名;或數(shù)據(jù)類型數(shù)組名[];說明:①數(shù)據(jù)類型定義了數(shù)組元素的數(shù)據(jù)類型,可以是基本類型或引用數(shù)據(jù)類型。②數(shù)組名定義數(shù)組變量的名字,應(yīng)符合標(biāo)識(shí)符的命名規(guī)則。③聲明數(shù)組時(shí),不能在方括號(hào)中指定數(shù)組的元素個(gè)數(shù)。例如int[]a;或inta[];是正確的數(shù)組聲明方式。int[10]a是錯(cuò)誤的數(shù)組聲明方式。4.1

一維數(shù)組的定義與使用2.一維數(shù)組的創(chuàng)建數(shù)組可使用new關(guān)鍵字創(chuàng)建數(shù)組,并分配存儲(chǔ)空間,格式如下:數(shù)組名=new數(shù)據(jù)類型[數(shù)組長(zhǎng)度];a=newint[5];系統(tǒng)創(chuàng)建數(shù)組并分配存儲(chǔ)空間數(shù)組中的每個(gè)元素會(huì)自動(dòng)賦一個(gè)默認(rèn)值整型為0,實(shí)型為0.0,布爾型為false,字符型為’\0’數(shù)組的聲明與創(chuàng)建可以合二為一,格式為:數(shù)據(jù)類型[]數(shù)組名=new數(shù)據(jù)類型[數(shù)組長(zhǎng)度];int[]a=newint[5];利用初始化方式聲明數(shù)組變量,其格式如下:數(shù)據(jù)類型[]數(shù)組名={值1,值2,……};int[]a=newint[]{1,2,3,4,5};4.1.2一維數(shù)組的初始化1.一維數(shù)組的初始化(1)靜態(tài)初始化靜態(tài)初始化是指在創(chuàng)建數(shù)組的同時(shí)給數(shù)組賦值。如,char[]c={'a','b','c'};String[]s={"hello","world"};(2)動(dòng)態(tài)初始化動(dòng)態(tài)初始化是指在創(chuàng)建數(shù)組后,再給數(shù)組元素賦值。如,int[]a=newint[5];for(inti=0;i<a.length;i++)a[i]=i+1;String[]s=newString[2];s[0]="hello";s[1]="world";72.一維數(shù)組內(nèi)存分配int[]a;//聲明

a=newint[3];//創(chuàng)建

for(inti=0;i<a.length;i++){a[i]=i+1;//引用

}2.一維數(shù)組內(nèi)存分配int[]a;在棧中生成一個(gè)名為a的引用變量,這時(shí)還未生成任何實(shí)際的數(shù)組,所以堆中沒有任何相應(yīng)的信息(見圖(a))。a=newint[3];這時(shí),new關(guān)鍵字生成了一個(gè)數(shù)組,這個(gè)數(shù)組是在堆中的,共有3個(gè)元素(見圖(b))。引用變量的指針指向這個(gè)數(shù)組。直到這時(shí),數(shù)組才是可以被訪問的:for(inti=0;i<a.length;i++) a[i]=i+1;代碼運(yùn)行的結(jié)果是為數(shù)組賦值(見圖(c))4.1.3一維數(shù)組的引用為數(shù)組分配了空間以后,就可以訪問數(shù)組中的每一個(gè)元素了,數(shù)組引用的格式為:數(shù)組名[數(shù)組下標(biāo)]int[]a=newint[3];數(shù)組下表從0到2,如果調(diào)用了a[3],程序會(huì)出現(xiàn)數(shù)組下標(biāo)越界錯(cuò)誤提示信息:java.lang.ArrayIndexOutOfBoundsException【例4.1】某小組有10個(gè)學(xué)生,進(jìn)行了數(shù)學(xué)考試,求他們數(shù)學(xué)成績(jī)的平均分、最高分和最低分。publicclassexample4_1{ publicstaticvoidmain(String[]args){ float[]a=newfloat[10]; floatsum,ave,max,min; inti; Scannersc=newScanner(System.in); System.out.println("請(qǐng)依次輸入10位同學(xué)的數(shù)學(xué)成績(jī):"); //通過數(shù)組的length屬性獲得數(shù)組長(zhǎng)度

for(i=0;i<a.length;i++){ a[i]=sc.nextFloat(); } sum=0; max=a[0]; min=a[0]; for(i=0;i<a.length;i++){ sum+=a[i]; if(a[i]>max) max=a[i]; if(a[i]<min) min=a[i]; } ave=sum/a.length; System.out.println("平均分:"+ave+",最高分:"+max+",最低分:"+min); }}【例4.2】將一個(gè)數(shù)組的內(nèi)容按顛倒的次序重新存放。publicclassexample4_2{ publicstaticvoidmain(String[]args){ int[]a=newint[7]; inti,temp; Scannersc=newScanner(System.in); System.out.println("請(qǐng)輸入7個(gè)整數(shù):"); for(i=0;i<a.length;i++) a[i]=sc.nextInt(); System.out.println("交換前:"); for(i=0;i<a.length;i++) System.out.print(a[i]+"\t"); System.out.println(); for(i=0;i<a.length/2;i++){

temp=a[i]; a[i]=a[a.length-i-1]; a[a.length-i-1]=temp; } System.out.println("交換后:");//增強(qiáng)型for循環(huán)遍歷數(shù)組,優(yōu)點(diǎn)不需關(guān)心數(shù)組下標(biāo)

for(intx:a) System.out.print(x+"\t");

System.out.println(); }}4.2多維數(shù)組的定義與使用4.2.1二維數(shù)組的定義1.二維數(shù)組的聲明數(shù)據(jù)類型[][]

數(shù)組名;或數(shù)據(jù)類型數(shù)組名[][];說明:①二維數(shù)組最后一維的所有元素具有相同的數(shù)據(jù)類型。②二維數(shù)組的非最后一維的所有元素是數(shù)組類型。③聲明二維數(shù)組時(shí),不能在方括號(hào)中指定數(shù)組的元素個(gè)數(shù)。例如int[][]a;或inta[][];是正確的二維數(shù)組聲明方式。int[3][10]a是錯(cuò)誤的數(shù)組聲明方式。2.二維數(shù)組的創(chuàng)建2.二維數(shù)組的創(chuàng)建①直接創(chuàng)建數(shù)組,為每一維分配存儲(chǔ)空間數(shù)組可使用new關(guān)鍵字創(chuàng)建二維數(shù)組,并分配存儲(chǔ)空間,格式如下:數(shù)組名=new數(shù)據(jù)類型[第1維長(zhǎng)度][第2維長(zhǎng)度];這時(shí),系統(tǒng)會(huì)創(chuàng)建數(shù)組并為數(shù)組分配存儲(chǔ)空間,如:a=newint[3][2];也可將數(shù)組的聲明與創(chuàng)建合二為一,用一條語句表示,格式為:數(shù)據(jù)類型[][]數(shù)組名=new數(shù)據(jù)類型[第一維長(zhǎng)度][第二維長(zhǎng)度];或數(shù)據(jù)類型數(shù)組名[][]=new數(shù)據(jù)類型[第一維長(zhǎng)度][第二維長(zhǎng)度];例如,int[][]a=newint[3][2];2.二維數(shù)組的創(chuàng)建②從高維開始,分別為每一維分配存儲(chǔ)空間使用方法①初始化的二維數(shù)組是第二維的每個(gè)數(shù)組都有相同的長(zhǎng)度規(guī)則數(shù)組,還可以采用另外的方法實(shí)現(xiàn)不規(guī)則數(shù)組的初始化,格式如下:數(shù)組名=new數(shù)據(jù)類型[第1維的長(zhǎng)度][];數(shù)組名[0]=new數(shù)據(jù)類型[第2維中第1行的長(zhǎng)度];數(shù)組名[1]=new數(shù)據(jù)類型[第2維中第2行的長(zhǎng)度];……2.二維數(shù)組的創(chuàng)建從高維開始進(jìn)行數(shù)組初始化的例子:a=newint[3][]; //先為第一維分配空間,注意這時(shí)沒有為第二維分配空間a[0]=newint[2]; //然后為第二維的每一個(gè)元素(數(shù)組)分配空間a[1]=newint[1];a[2]=newint[3];4.2.2二維數(shù)組的初始化1.二維數(shù)組的初始化為數(shù)組分配完空間后,需要對(duì)數(shù)組進(jìn)行初始化,可以直接為數(shù)組元素賦值,如:

inta[][]=newint[2][2]; a[0][0]=1; a[0][1]=2; a[1][0]=3; a[1][1]=4;也可以不用new運(yùn)算符,而是利用初始化值,完成數(shù)組的創(chuàng)建與初始化,如:

int[][]a={{1,2,3},{4,5,6}};//聲明、創(chuàng)建及初始化2行3列數(shù)組

int[][]b={{1},{2,3},{4,5,6}};//聲明、創(chuàng)建及初始化不規(guī)則數(shù)組17創(chuàng)建數(shù)組(一)直接為每一維分配空間int[][]a;//1.二維數(shù)組的聲明

a=newint[3][2];//2.二維數(shù)組的創(chuàng)建(三行二列)

a[0][0]=1;//3.二維數(shù)組的引用

a[0][1]=2;a[1][0]=3;a[1][1]=4;a[2][0]=5;a[2][1]=6;18創(chuàng)建數(shù)組(二)從高維開始,分別為每一維分配空間

int[][]a;//1.二維數(shù)組的聲明a=newint[3][];//2.先為第一維分配空間a[0]=newint[2];//然后為第二維的每一個(gè)元素分配空間a[1]=newint[1];a[2]=newint[3];a[0][0]=1;//3.二維數(shù)組的引用a[0][1]=2;a[1][0]=3;a[2][1]=4;a[2][2]=5;a[2][3]=6;192.二維數(shù)組內(nèi)存分配int[][]a;//聲明

a=newint[3][];//高維開始

a[0]=newint[1];//每一維

a[1]=newint[2];a[2]=newint[3];a[0][0]=1;//訪問

a[1][1]=2;a[2][2]=3;4.2.3二維數(shù)組的引用二維數(shù)組引用格式為:數(shù)組名[下標(biāo)1][下標(biāo)2];其中,下標(biāo)1、下標(biāo)2分別是第1維和第2維的數(shù)組下標(biāo),并且下標(biāo)為整型常量或表達(dá)式,且從0開始?!纠?.3】通過鍵盤給一個(gè)3行4列的二維數(shù)組輸入整型數(shù)值,并按表格形式輸出此數(shù)組的所有元素。publicclassexample4_3{ publicstaticvoidmain(String[]args){ int[][]a=newint[3][4]; Scannersc=newScanner(System.in); inti,j; System.out.println("請(qǐng)輸入12個(gè)整數(shù):"); for(i=0;i<a.length;i++) for(j=0;j<a[i].length;j++) a[i][j]=sc.nextInt(); System.out.println("表格形式輸出數(shù)組:"); for(i=0;i<a.length;i++){ for(j=0;j<a[i].length;j++) System.out.print(a[i][j]+"\t"); System.out.println(); } }}

【例4.5】二維數(shù)組:定義一個(gè)三角數(shù)組,存放乘法表的結(jié)果。publicclassexample4_5{ publicstaticvoidmain(String[]args){ String[][]triangleArray=newString[9][]; //聲明并初始化三角形數(shù)組

for(inti=0;i<triangleArray.length;i++){ triangleArray[i]=newString[i+1]; } //為該三角形數(shù)組賦乘法表的結(jié)果

for(inti=0;i<triangleArray.length;i++){ for(intj=0;j<triangleArray[i].length;j++){ triangleArray[i][j]=(i+1)+"*"+(j+1)+"="+(i+1) *(j+1); } } //輸出該三角形數(shù)組

for(inti=0;i<triangleArray.length;i++){ for(intj=0;j<triangleArray[i].length;j++){ System.out.print("\t"+triangleArray[i][j]); } System.out.println(); } }}4.3數(shù)組的常用方法1.System類中的arraycopy方法系統(tǒng)類System提供了一個(gè)復(fù)制(克?。?shù)組的方法,其格式為:publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)其中,src為源數(shù)組名,src_pos為源數(shù)組的起始位置,dst為目標(biāo)數(shù)組名,dst_pos為目標(biāo)數(shù)組的起始位置,length為復(fù)制的長(zhǎng)度,例如:

inta[]={1,2,3,4,5,6,7}; intb[]=newint[6];//結(jié)果是b的內(nèi)容為002340 System.arraycopy(a,1,b,2,3); 2.java.util.Arrays類中的有關(guān)方法①數(shù)組排序sort()排序方法的格式是:publicstaticvoidsort(Object[]a)其功能是根據(jù)元素的自然順序,對(duì)指定對(duì)象數(shù)組按升序進(jìn)行排序。例如:

inta[]={7,5,2,6,3}; Arrays.sort(a); //結(jié)果是a的內(nèi)容為23567sort方法存在重載,其格式為:publicstaticvoidsort(Object[]arrayname,intfromindex,inttoindex)其中,fromindex和toindex是進(jìn)行排序的起始位置和結(jié)束

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論