java 課件 第四章 中文版_第1頁(yè)
java 課件 第四章 中文版_第2頁(yè)
java 課件 第四章 中文版_第3頁(yè)
java 課件 第四章 中文版_第4頁(yè)
java 課件 第四章 中文版_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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ù)組用來(lái)一次定義相同類型的多個(gè)變量,占用內(nèi)存中的連續(xù)空間。數(shù)組也是一個(gè)對(duì)象,可以有屬性(如:length屬性指示數(shù)組長(zhǎng)度),但沒(méi)有方法。申明數(shù)組的方式有兩種:int[]a;或inta[];二者均可,但推薦前者!數(shù)組長(zhǎng)度在聲明時(shí)可以給,也可不給。如:int[100]a;//申明一個(gè)包含100個(gè)元素的元素類型為整型的數(shù)組甚至int[0]a;亦可,即可以申明長(zhǎng)度為零的數(shù)組。數(shù)組聲明僅定義了一個(gè)數(shù)組變量(數(shù)組對(duì)象的引用),此時(shí)還不會(huì)給數(shù)組分配空間,構(gòu)造該對(duì)象時(shí)才會(huì)分配空間。不能通過(guò)a++等操作訪問(wèn)數(shù)組的下一個(gè)元素。數(shù)組顯式構(gòu)造隱式初始化:

explicitconstructionandimplicitinitialization顯式構(gòu)造:使用new操作符。如double[]d=newdouble[10]構(gòu)造后,基本類型的數(shù)組沒(méi)有初始化則系統(tǒng)也會(huì)賦值為相應(yīng)類型的默認(rèn)值int:0,Long:0L,float:0.0f,double:0.0char:‘\u0000’,boolean:false構(gòu)造后,對(duì)象類型的數(shù)組沒(méi)有初始化則系統(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è)[]中間必須為空,后面才能用{}來(lái)初始化。數(shù)組顯式構(gòu)造顯式初始化:explicitconstructionandexplicitinitializationpublicclassT4ExplicitInitialization{publicstaticvoidmain(String[]args){int[]a=newint[]{1,2,3};//[]內(nèi)必須空int[]b={4,5,6};//不能分開(kāi)

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))訪問(wèn)數(shù)組元素:數(shù)組名[下標(biāo)]J2SE1.5提供的foreach循環(huán)允許以更簡(jiǎn)單地方式來(lái)遍歷數(shù)組和Collection等類型的對(duì)象。for(循環(huán)變量類型循環(huán)變量名稱:要被遍歷的對(duì)象){循環(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));}}編譯無(wú)問(wèn)題,但修改不了數(shù)組元素java.util.ArraysclassandCommonoperations

此類包含用來(lái)操作數(shù)組的多種方法:sort(

)方法對(duì)數(shù)組進(jìn)行排序(默認(rèn)升序)。有兩種形式(局部/整體)。fill(

)方法用一個(gè)指定的值填充數(shù)組。有兩種形式(局部/整體)。binarySearch(

)方法使用二進(jìn)制搜索尋找指定的值。僅應(yīng)用于排序數(shù)組。返回的是int型索引值。equals(

)方法比較兩個(gè)數(shù)組是否相等。返回boolean型值。copyOf():拷貝數(shù)組參數(shù)或者說(shuō)數(shù)組類型可以是各種基本類型或object對(duì)象類型.方法均為靜態(tài)。無(wú)需生成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));}}對(duì)其他類型數(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()方法來(lái)產(chǎn)生一個(gè)隨機(jī)數(shù),這個(gè)產(chǎn)生的隨機(jī)數(shù)是0-1之間的一個(gè)double。java.util.Random的對(duì)象可以產(chǎn)生隨機(jī)int、隨機(jī)float、隨機(jī)double,隨機(jī)long,java.util.Random類有兩種方式構(gòu)建方式:帶種子和不帶種子不帶種子:每次運(yùn)行結(jié)果不一樣帶種子:無(wú)論程序運(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));}}成績(jī)分段統(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)用例證:成績(jī)分段統(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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論