版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Chapter4:array(數(shù)組)Theconceptofarrays(數(shù)組概念)Todeclare,constructandinitializeanarray(申明、構(gòu)建和初始化)ToExploretheconstructionandinitialization(探究構(gòu)造和初始化)Toaccessarrayelements(存取數(shù)組元素)與for-eachloops(for-each循環(huán))Toapplyjava.util.Randomclasses(Random類)The
java.util.ArraysclassandCommonarrayoperationsThecommandlineparametor(命令行參數(shù))Tocopyarray(拷貝數(shù)組)Topassarraysasmethodparameter(數(shù)組作為參數(shù))課本中一維數(shù)組主要例證講解Java的數(shù)組-declaration數(shù)組用來一次定義相同類型的多個(gè)變量,占用內(nèi)存中的連續(xù)空間。數(shù)組也是一個(gè)對象,可以有屬性(如:length屬性指示數(shù)組長度),但沒有方法。申明數(shù)組的方式有兩種:int[]a;或inta[];二者均可,但推薦前者!數(shù)組長度在聲明時(shí)可以給,也可不給。如:int[100]a;//申明一個(gè)包含100個(gè)元素的元素類型為整型的數(shù)組甚至int[0]a;亦可,即可以申明長度為零的數(shù)組。數(shù)組聲明僅定義了一個(gè)數(shù)組變量(數(shù)組對象的引用),此時(shí)還不會(huì)給數(shù)組分配空間,構(gòu)造該對象時(shí)才會(huì)分配空間。不能通過a++等操作訪問數(shù)組的下一個(gè)元素。數(shù)組顯式構(gòu)造隱式初始化:
explicitconstructionandimplicitinitialization顯式構(gòu)造:使用new操作符。如double[]d=newdouble[10]構(gòu)造后,基本類型的數(shù)組沒有初始化則系統(tǒng)也會(huì)賦值為相應(yīng)類型的默認(rèn)值int:0,Long:0L,float:0.0f,double:0.0char:‘\u0000’,boolean:false構(gòu)造后,對象類型的數(shù)組沒有初始化則系統(tǒng)默認(rèn)會(huì)賦值為null為使用實(shí)際值初始化,該法需分步驟進(jìn)行。Int[]b=newint[10];for(inti=0;i<b.length;i++){b[i]=(int)(10*Math.random()+1);}Strangleusage!publicclassT4ImplicitInitialization{publicstaticvoidmain(String[]args){int[]a=newint[3];double[]b=newdouble[a.length];String[]c=newString[a.length];boolean[]d=newboolean[a.length];
for(inti=0;i<a.length;i++){System.out.printf("%d,%f,%s,%b\n",a[i],b[i],c[i],d[i]);}}}在定義數(shù)組a時(shí)就分配空間并初始化int[]a={3,7,54,24,98,1,0,5};數(shù)組隱式構(gòu)造顯式初始化:implicitconstructionandexplicitinitialization使用new生成匿名數(shù)組并初始化,然后將引用賦予數(shù)組變量。int[]b=newint[]{4,6,8,32};第二個(gè)[]中間必須為空,后面才能用{}來初始化。數(shù)組顯式構(gòu)造顯式初始化:explicitconstructionandexplicitinitializationpublicclassT4ExplicitInitialization{publicstaticvoidmain(String[]args){int[]a=newint[]{1,2,3};//[]內(nèi)必須空int[]b={4,5,6};//不能分開
int[]c=newint[3];//創(chuàng)建數(shù)組、默認(rèn)初始化for(inti=0;i<c.length;i++){c[i]=(int)(10*Math.random()+1);}
for(inti=0;i<3;i++){System.out.printf("%d,%d,%d\n",a[i],b[i],c[i]);}}}Exploretheconstructionandinitialization
(探究構(gòu)造和初始化)publicclassT4ExploreConstruction{publicstaticvoidmain(String[]args){int[]a=newint[]{2,4,6};int[]b={1,3,5};int[]c=newint[3];
for(inti=0;i<a.length;++i){System.out.println(a[i]+""+b[i]+""+c[i]);}}}反編譯結(jié)果Toaccessarrayelements(存取數(shù)組元素)與for-eachloops(for-each循環(huán))訪問數(shù)組元素:數(shù)組名[下標(biāo)]J2SE1.5提供的foreach循環(huán)允許以更簡單地方式來遍歷數(shù)組和Collection等類型的對象。for(循環(huán)變量類型循環(huán)變量名稱:要被遍歷的對象){循環(huán)體}例如:int[]integers={1,2,3,4};for(intvar:integers){System.out.println(var);});//依次輸出元素1234注意:循環(huán)變量的類型要和被遍歷的數(shù)組中元素的類型相同/兼容(int去遍歷byte)僅單元素、前向、一維、取用publicclassT4ForEach{publicstaticvoidmain(String[]args){String[]s=newString[]{"spring","summer","autumn","wintter"};
for(Stringseason:s){System.out.println("theseasonisnow"+season);season="tt";}System.out.println(java.util.Arrays.toString(s));}}編譯無問題,但修改不了數(shù)組元素java.util.ArraysclassandCommonoperations
此類包含用來操作數(shù)組的多種方法:sort(
)方法對數(shù)組進(jìn)行排序(默認(rèn)升序)。有兩種形式(局部/整體)。fill(
)方法用一個(gè)指定的值填充數(shù)組。有兩種形式(局部/整體)。binarySearch(
)方法使用二進(jìn)制搜索尋找指定的值。僅應(yīng)用于排序數(shù)組。返回的是int型索引值。equals(
)方法比較兩個(gè)數(shù)組是否相等。返回boolean型值。copyOf():拷貝數(shù)組參數(shù)或者說數(shù)組類型可以是各種基本類型或object對象類型.方法均為靜態(tài)。無需生成Arrays實(shí)例。
importjava.util.Arrays;publicclassT4ArraysClass{publicstaticvoidmain(String[]args){int[]a=newint[]{1,3,2,9,4,7,5,0,8,6};int[]b=Arrays.copyOf(a,a.length);
System.out.println("\nTheoriginalarrayais:");outArray(a);System.out.println("\naftersorting,arrayabecomes:");Arrays.sort(a);outArray(a);System.out.println("\nbutthecopyofarrayaisstill:");outArray(b);System.out.println("\nusingtoString()toprinta:\n"+Arrays.toString(a));}privatestaticvoidoutArray(int[]a){for(inti=0;i<a.length;i++){System.out.print(a[i]+"");}}}Tocopyarray拷貝數(shù)組四種方法:使用循環(huán)使用System.out.arraycopy方法使用Arrays.copyOf方法使用clone方法importjava.util.Arrays;publicclassT4CopyArray{publicstaticvoidmain(String[]args){int[]a={1,2,3,4,5};int[]b=Arrays.copyOf(a,10);int[]c=Arrays.copyOf(a,a.length);
System.out.println(Arrays.toString(a));System.out.println(Arrays.toString(b));System.out.println(Arrays.toString(c));}}對其他類型數(shù)組,不足時(shí)Array.copyOf會(huì)如何初始化多余元素?importjava.util.Arrays;publicclassT4CopyCharByteArray{publicstaticvoidmain(String[]args){char[]a0={'1','2','3','4','5'};char[]b0=Arrays.copyOf(a0,10);char[]c0=Arrays.copyOf(a0,a0.length);System.out.println(Arrays.toString(a0));System.out.println(Arrays.toString(b0));System.out.println(Arrays.toString(c0));
byte[]a1={1,2,3,4,5};byte[]b1=Arrays.copyOf(a1,10);byte[]c1=Arrays.copyOf(a1,a1.length);System.out.println(Arrays.toString(a1));System.out.println(Arrays.toString(b1));System.out.println(Arrays.toString(c1));
double[]a2={1.0,2.0,3.0,4.0,5.0};double[]b2=Arrays.copyOf(a2,10);double[]c2=Arrays.copyOf(a2,a2.length);System.out.println(Arrays.toString(a2));System.out.println(Arrays.toString(b2));System.out.println(Arrays.toString(c2));}}Random類Math.random()方法來產(chǎn)生一個(gè)隨機(jī)數(shù),這個(gè)產(chǎn)生的隨機(jī)數(shù)是0-1之間的一個(gè)double。java.util.Random的對象可以產(chǎn)生隨機(jī)int、隨機(jī)float、隨機(jī)double,隨機(jī)long,java.util.Random類有兩種方式構(gòu)建方式:帶種子和不帶種子不帶種子:每次運(yùn)行結(jié)果不一樣帶種子:無論程序運(yùn)行多少次,返回結(jié)果都是一樣的
importjava.util.Random;importjava.util.Arrays;publicclassT4RandomClass{publicstaticvoidmain(String[]args){int[]a=newint[10];double[]d=newdouble[10];
initIntArray(a);initDoubleArray(d);System.out.println(Arrays.toString(a));System.out.println(Arrays.toString(d));}privatestaticvoidinitIntArray(int[]a){Randomr=newRandom();for(inti=0;i<a.length;i++){a[i]=r.nextInt(100);//取均勻分布于0-100之間的整數(shù)值}}privatestaticvoidinitDoubleArray(double[]a){Randomr=newRandom();for(inti=0;i<a.length;i++){a[i]=r.nextDouble();//取分布于0.0-1.0之間的符點(diǎn)數(shù)}}}importjava.util.Scanner;importjava.util.Arrays;publicclassT4LettersAndDigits{publicstaticvoidmain(String[]args){int[]digits=newint[10];int[]chars=newint[26];Scannersc=newScanner(System.in);Strings=sc.nextLine();
for(inti=0;i<s.length();i++){charc=s.charAt(i);if((c>='0')&&(c<='9')){digits[c-'0']++;//digits[c]++?}elseif((c>='a')&&(c<='z')){chars[c-'a']++;}elseif((c>='A')&&(c<='Z')){chars[c-'A']++;}}System.out.println(Arrays.toString(digits));System.out.println(Arrays.toString(chars));}}成績分段統(tǒng)計(jì)如何散列實(shí)現(xiàn)?(5分一段/10分一段)不區(qū)分大小寫如何實(shí)現(xiàn)上述統(tǒng)計(jì)?一組射擊數(shù)據(jù)(xi,yi){i:1..n}如何計(jì)算射手的特點(diǎn)?TheCommandlineparametor命令行參數(shù):publicclassT4CommandLinePara{publicstaticvoidmain(String[]args){if(args.length!=0){for(inti=0;i<args.length;i++){System.out.println(args[i]);}}else{System.out.println("noparameterispassed");}}}Java命令行數(shù)組不包含程序名。Topassarraysasmethodparameter(數(shù)組作為參數(shù))輸入?yún)?shù),輸出參數(shù),或既作為輸入又作為輸出可以作為方法結(jié)果返回。例:publicclassT4Cards{publicstaticvoidmain(String[]args){int[]deck=newint[52];//每13個(gè)元素一組String[]suits={"Hearts","Spades","Clubs","Diamonds"};String[]out;
initCards(deck);shuffleCards(deck);out=generateResults(deck,suits);printResults(out);}
publicstaticvoidinitCards(int[]a){ for(inti=0;i<a.length;i++){a[i]=i;} }publicstaticvoidshuffleCards(int[]a){ for(inti=0;i<a.length;i++){ intindex=(int)(Math.random()*a.length); inttemp=a[index];a[index]=a[i];a[i]=temp;} }publicstaticString[]generateResults(int[]a,String[]b){ String[]c=newString[a.length]; for(inti=0;i<a.length;i++){ Stringsuit=b[a[i]/13]; intrank=a[i]%13; c[i]=suit+""+rank; } returnc;}
publicstaticvoidprintResults(String[]b){System.out.println("Aftershuffling:"); for(inti=0;i<b.length;i++){ System.out.println("cardnumber"+i+":"+b[i]);}}}數(shù)組作為輸入和輸出例:(局部修改上例)publicclassT4Cards01{publicstaticvoidmain(String[]args){ finalintCARDS_NUMBER=52;
int[]deck=newint[CARDS_NUMBER];//每13個(gè)元素一組String[]suits={"Hearts","Spades","Clubs","Diamonds"};String[]out=newString[CARDS_NUMBER];
initCards(deck);shuffleCards(deck);generateResults(deck,suits,out);printResults(out);……publicstaticvoidgenerateResults(int[]a,String[]b,String[]c){ for(inti=0;i<a.length;i++){ Stringsuit=b[a[i]/13]; intrank=a[i]%13; c[i]=suit+""+rank; }}…….應(yīng)用例證:成績分段統(tǒng)計(jì)publicclassT4SegCounting{publicstaticvoidmain(String[]args){finalintGAP=5;
intnumbers=109;double[]scores;int[]segments;
scores=initScores(numbers);segments=counting(scores,GAP);outScores(scores);System.out.println("\n");outCounting(segments);}publicstaticdouble[]initScores(intnumbers){double[]scores=newdouble[numbers];for(inti=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年中國微型透視器數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024至2030年中國定型烘干小樣機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024至2030年中國園區(qū)管理服務(wù)系統(tǒng)數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024年中國芳綸四氟混編盤根市場調(diào)查研究報(bào)告
- 2024年中國硝酸鈰銨市場調(diào)查研究報(bào)告
- 2024八年級數(shù)學(xué)上冊第四章圖形的平移與旋轉(zhuǎn)3中心對稱第2課時(shí)中心對稱圖形習(xí)題課件魯教版五四制
- 2024年新疆2024年客運(yùn)從業(yè)資格證模擬考試
- 2024年合作c1客運(yùn)資格證模擬考試題下載
- 校園欺凌處理制度及措施
- 趙作海與杜培武案件
- 護(hù)理品管圈QCC之提高手術(shù)物品清點(diǎn)規(guī)范執(zhí)行率課件
- 浙江省“衢溫51”聯(lián)盟2023-2024學(xué)年高一上學(xué)期期中聯(lián)考?xì)v史試題
- 學(xué)校拔尖人才培養(yǎng)方案(高中)
- 設(shè)計(jì)交底記錄表
- 人教版英語四年級上冊《Unit-3-My-friends》單元教學(xué)課件
- 揚(yáng)州某校2023-2024蘇教版五年級上冊數(shù)學(xué)期中課堂練習(xí)及答案
- 材料力學(xué)第4版單輝祖習(xí)題答案
- 江蘇省泰州市姜堰區(qū)2023-2024學(xué)年九年級上學(xué)期期中語文試題
- 綜合布線系統(tǒng)工程電氣性能測試記錄
- 我的家鄉(xiāng)湖北荊門介紹
- 英文發(fā)票收據(jù)模板
評論
0/150
提交評論