




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
程序設計第4章數組2目錄
4.1
一維數組的定義與使用
4.2二維數組的定義與使用
4.3數組的常用方法
一維數組1、一維數組的聲明2、一維數組的創建3、一維數組的初始化4、一維數組的引用44.1
一維數組的定義與使用4.1.1一維數組的定義1、一維數組的聲明數據類型[]
數組名;或數據類型數組名[];說明:①數據類型定義了數組元素的數據類型,可以是基本類型或引用數據類型。②數組名定義數組變量的名字,應符合標識符的命名規則。③聲明數組時,不能在方括號中指定數組的元素個數。例如int[]a;或inta[];是正確的數組聲明方式。int[10]a是錯誤的數組聲明方式。4.1
一維數組的定義與使用2.一維數組的創建數組可使用new關鍵字創建數組,并分配存儲空間,格式如下:數組名=new數據類型[數組長度];a=newint[5];系統創建數組并分配存儲空間數組中的每個元素會自動賦一個默認值整型為0,實型為0.0,布爾型為false,字符型為’\0’數組的聲明與創建可以合二為一,格式為:數據類型[]數組名=new數據類型[數組長度];int[]a=newint[5];利用初始化方式聲明數組變量,其格式如下:數據類型[]數組名={值1,值2,……};int[]a=newint[]{1,2,3,4,5};4.1.2一維數組的初始化1.一維數組的初始化(1)靜態初始化靜態初始化是指在創建數組的同時給數組賦值。如,char[]c={'a','b','c'};String[]s={"hello","world"};(2)動態初始化動態初始化是指在創建數組后,再給數組元素賦值。如,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.一維數組內存分配int[]a;//聲明
a=newint[3];//創建
for(inti=0;i<a.length;i++){a[i]=i+1;//引用
}2.一維數組內存分配int[]a;在棧中生成一個名為a的引用變量,這時還未生成任何實際的數組,所以堆中沒有任何相應的信息(見圖(a))。a=newint[3];這時,new關鍵字生成了一個數組,這個數組是在堆中的,共有3個元素(見圖(b))。引用變量的指針指向這個數組。直到這時,數組才是可以被訪問的:for(inti=0;i<a.length;i++) a[i]=i+1;代碼運行的結果是為數組賦值(見圖(c))4.1.3一維數組的引用為數組分配了空間以后,就可以訪問數組中的每一個元素了,數組引用的格式為:數組名[數組下標]int[]a=newint[3];數組下表從0到2,如果調用了a[3],程序會出現數組下標越界錯誤提示信息:java.lang.ArrayIndexOutOfBoundsException【例4.1】某小組有10個學生,進行了數學考試,求他們數學成績的平均分、最高分和最低分。publicclassexample4_1{ publicstaticvoidmain(String[]args){ float[]a=newfloat[10]; floatsum,ave,max,min; inti; Scannersc=newScanner(System.in); System.out.println("請依次輸入10位同學的數學成績:"); //通過數組的length屬性獲得數組長度
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】將一個數組的內容按顛倒的次序重新存放。publicclassexample4_2{ publicstaticvoidmain(String[]args){ int[]a=newint[7]; inti,temp; Scannersc=newScanner(System.in); System.out.println("請輸入7個整數:"); 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("交換后:");//增強型for循環遍歷數組,優點不需關心數組下標
for(intx:a) System.out.print(x+"\t");
System.out.println(); }}4.2多維數組的定義與使用4.2.1二維數組的定義1.二維數組的聲明數據類型[][]
數組名;或數據類型數組名[][];說明:①二維數組最后一維的所有元素具有相同的數據類型。②二維數組的非最后一維的所有元素是數組類型。③聲明二維數組時,不能在方括號中指定數組的元素個數。例如int[][]a;或inta[][];是正確的二維數組聲明方式。int[3][10]a是錯誤的數組聲明方式。2.二維數組的創建2.二維數組的創建①直接創建數組,為每一維分配存儲空間數組可使用new關鍵字創建二維數組,并分配存儲空間,格式如下:數組名=new數據類型[第1維長度][第2維長度];這時,系統會創建數組并為數組分配存儲空間,如:a=newint[3][2];也可將數組的聲明與創建合二為一,用一條語句表示,格式為:數據類型[][]數組名=new數據類型[第一維長度][第二維長度];或數據類型數組名[][]=new數據類型[第一維長度][第二維長度];例如,int[][]a=newint[3][2];2.二維數組的創建②從高維開始,分別為每一維分配存儲空間使用方法①初始化的二維數組是第二維的每個數組都有相同的長度規則數組,還可以采用另外的方法實現不規則數組的初始化,格式如下:數組名=new數據類型[第1維的長度][];數組名[0]=new數據類型[第2維中第1行的長度];數組名[1]=new數據類型[第2維中第2行的長度];……2.二維數組的創建從高維開始進行數組初始化的例子:a=newint[3][]; //先為第一維分配空間,注意這時沒有為第二維分配空間a[0]=newint[2]; //然后為第二維的每一個元素(數組)分配空間a[1]=newint[1];a[2]=newint[3];4.2.2二維數組的初始化1.二維數組的初始化為數組分配完空間后,需要對數組進行初始化,可以直接為數組元素賦值,如:
inta[][]=newint[2][2]; a[0][0]=1; a[0][1]=2; a[1][0]=3; a[1][1]=4;也可以不用new運算符,而是利用初始化值,完成數組的創建與初始化,如:
int[][]a={{1,2,3},{4,5,6}};//聲明、創建及初始化2行3列數組
int[][]b={{1},{2,3},{4,5,6}};//聲明、創建及初始化不規則數組17創建數組(一)直接為每一維分配空間int[][]a;//1.二維數組的聲明
a=newint[3][2];//2.二維數組的創建(三行二列)
a[0][0]=1;//3.二維數組的引用
a[0][1]=2;a[1][0]=3;a[1][1]=4;a[2][0]=5;a[2][1]=6;18創建數組(二)從高維開始,分別為每一維分配空間
int[][]a;//1.二維數組的聲明a=newint[3][];//2.先為第一維分配空間a[0]=newint[2];//然后為第二維的每一個元素分配空間a[1]=newint[1];a[2]=newint[3];a[0][0]=1;//3.二維數組的引用a[0][1]=2;a[1][0]=3;a[2][1]=4;a[2][2]=5;a[2][3]=6;192.二維數組內存分配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二維數組的引用二維數組引用格式為:數組名[下標1][下標2];其中,下標1、下標2分別是第1維和第2維的數組下標,并且下標為整型常量或表達式,且從0開始。【例4.3】通過鍵盤給一個3行4列的二維數組輸入整型數值,并按表格形式輸出此數組的所有元素。publicclassexample4_3{ publicstaticvoidmain(String[]args){ int[][]a=newint[3][4]; Scannersc=newScanner(System.in); inti,j; System.out.println("請輸入12個整數:"); for(i=0;i<a.length;i++) for(j=0;j<a[i].length;j++) a[i][j]=sc.nextInt(); System.out.println("表格形式輸出數組:"); 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】二維數組:定義一個三角數組,存放乘法表的結果。publicclassexample4_5{ publicstaticvoidmain(String[]args){ String[][]triangleArray=newString[9][]; //聲明并初始化三角形數組
for(inti=0;i<triangleArray.length;i++){ triangleArray[i]=newString[i+1]; } //為該三角形數組賦乘法表的結果
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); } } //輸出該三角形數組
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數組的常用方法1.System類中的arraycopy方法系統類System提供了一個復制(克隆)數組的方法,其格式為:publicstaticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)其中,src為源數組名,src_pos為源數組的起始位置,dst為目標數組名,dst_pos為目標數組的起始位置,length為復制的長度,例如:
inta[]={1,2,3,4,5,6,7}; intb[]=newint[6];//結果是b的內容為002340 System.arraycopy(a,1,b,2,3); 2.java.util.Arrays類中的有關方法①數組排序sort()排序方法的格式是:publicstaticvoidsort(Object[]a)其功能是根據元素的自然順序,對指定對象數組按升序進行排序。例如:
inta[]={7,5,2,6,3}; Arrays.sort(a); //結果是a的內容為23567sort方法存在重載,其格式為:publicstaticvoidsort(Object[]arrayname,intfromindex,inttoindex)其中,fromindex和toindex是進行排序的起始位置和結束
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水污染控制工程??荚囶}及答案(附解析)
- 護理學導論練習題(含答案解析)
- 2025年3月電力線路高級工題庫+答案(附解析)
- 2024年4月兒科護理習題(附參考答案解析)
- 《塔羅牌的團體使用》課件
- 纖維原料的風險管理與應急預案考核試卷
- 藤編藝術品市場分析考核試卷
- 2025年郵政專用機械及器材合作協議書
- 罐頭食品原料儲藏與保鮮技術進展考核試卷
- 《農業水資源管理與利用》課件
- 全套老年人能力評估師考試題庫(50題+答案)
- 中職電子商務班級建設方案
- 高考日語-必考11個語法
- 【校本作業】六年級下冊語文校本作業與單元練習(附參考答案)
- 安全生產與質量管理體系的關系
- (完整文本版)體檢報告單模版
- 學生實習自主申請表
- 痛覺及其調制
- 七年級上冊語文人教版全冊文言文全文詳解及翻譯
- 北師大小學數學小升初《簡便運算》復習課件
- 園藝植物種質資源圖文
評論
0/150
提交評論