




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Chapter4:array(數組)Theconceptofarrays(數組概念)Todeclare,constructandinitializeanarray(申明、構建和初始化)ToExploretheconstructionandinitialization(探究構造和初始化)Toaccessarrayelements(存取數組元素)與for-eachloops(for-each循環)Toapplyjava.util.Randomclasses(Random類)The
java.util.ArraysclassandCommonarrayoperationsThecommandlineparametor(命令行參數)Tocopyarray(拷貝數組)Topassarraysasmethodparameter(數組作為參數)課本中一維數組主要例證講解Java的數組-declaration數組用來一次定義相同類型的多個變量,占用內存中的連續空間。數組也是一個對象,可以有屬性(如:length屬性指示數組長度),但沒有方法。申明數組的方式有兩種:int[]a;或inta[];二者均可,但推薦前者!數組長度在聲明時可以給,也可不給。如:int[100]a;//申明一個包含100個元素的元素類型為整型的數組甚至int[0]a;亦可,即可以申明長度為零的數組。數組聲明僅定義了一個數組變量(數組對象的引用),此時還不會給數組分配空間,構造該對象時才會分配空間。不能通過a++等操作訪問數組的下一個元素。數組顯式構造隱式初始化:
explicitconstructionandimplicitinitialization顯式構造:使用new操作符。如double[]d=newdouble[10]構造后,基本類型的數組沒有初始化則系統也會賦值為相應類型的默認值int:0,Long:0L,float:0.0f,double:0.0char:‘\u0000’,boolean:false構造后,對象類型的數組沒有初始化則系統默認會賦值為null為使用實際值初始化,該法需分步驟進行。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]);}}}在定義數組a時就分配空間并初始化int[]a={3,7,54,24,98,1,0,5};數組隱式構造顯式初始化:implicitconstructionandexplicitinitialization使用new生成匿名數組并初始化,然后將引用賦予數組變量。int[]b=newint[]{4,6,8,32};第二個[]中間必須為空,后面才能用{}來初始化。數組顯式構造顯式初始化:explicitconstructionandexplicitinitializationpublicclassT4ExplicitInitialization{publicstaticvoidmain(String[]args){int[]a=newint[]{1,2,3};//[]內必須空int[]b={4,5,6};//不能分開
int[]c=newint[3];//創建數組、默認初始化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
(探究構造和初始化)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]);}}}反編譯結果Toaccessarrayelements(存取數組元素)與for-eachloops(for-each循環)訪問數組元素:數組名[下標]J2SE1.5提供的foreach循環允許以更簡單地方式來遍歷數組和Collection等類型的對象。for(循環變量類型循環變量名稱:要被遍歷的對象){循環體}例如:int[]integers={1,2,3,4};for(intvar:integers){System.out.println(var);});//依次輸出元素1234注意:循環變量的類型要和被遍歷的數組中元素的類型相同/兼容(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));}}編譯無問題,但修改不了數組元素java.util.ArraysclassandCommonoperations
此類包含用來操作數組的多種方法:sort(
)方法對數組進行排序(默認升序)。有兩種形式(局部/整體)。fill(
)方法用一個指定的值填充數組。有兩種形式(局部/整體)。binarySearch(
)方法使用二進制搜索尋找指定的值。僅應用于排序數組。返回的是int型索引值。equals(
)方法比較兩個數組是否相等。返回boolean型值。copyOf():拷貝數組參數或者說數組類型可以是各種基本類型或object對象類型.方法均為靜態。無需生成Arrays實例。
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拷貝數組四種方法:使用循環使用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));}}對其他類型數組,不足時Array.copyOf會如何初始化多余元素?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()方法來產生一個隨機數,這個產生的隨機數是0-1之間的一個double。java.util.Random的對象可以產生隨機int、隨機float、隨機double,隨機long,java.util.Random類有兩種方式構建方式:帶種子和不帶種子不帶種子:每次運行結果不一樣帶種子:無論程序運行多少次,返回結果都是一樣的
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之間的整數值}}privatestaticvoidinitDoubleArray(double[]a){Randomr=newRandom();for(inti=0;i<a.length;i++){a[i]=r.nextDouble();//取分布于0.0-1.0之間的符點數}}}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));}}成績分段統計如何散列實現?(5分一段/10分一段)不區分大小寫如何實現上述統計?一組射擊數據(xi,yi){i:1..n}如何計算射手的特點?TheCommandlineparametor命令行參數: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命令行數組不包含程序名。Topassarraysasmethodparameter(數組作為參數)輸入參數,輸出參數,或既作為輸入又作為輸出可以作為方法結果返回。例:publicclassT4Cards{publicstaticvoidmain(String[]args){int[]deck=newint[52];//每13個元素一組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]);}}}數組作為輸入和輸出例:(局部修改上例)publicclassT4Cards01{publicstaticvoidmain(String[]args){ finalintCARDS_NUMBER=52;
int[]deck=newint[CARDS_NUMBER];//每13個元素一組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; }}…….應用例證:成績分段統計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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寵物店詳細創業計劃書(10)-20250205-215310
- 創業心理咨詢室計劃書
- 智能座艙建設項目經營計劃書
- 數字化轉型在教育領域的應用與影響
- SOP體系及人力資源管理提升咨詢項目建議書(28張)
- 保障體系覆蓋范圍與公平性評估
- 2025年中國天然植物染發劑行業市場前景預測及投資價值評估分析報告
- 皮膚病靶向治療專家共識(2025版)解讀
- 徐州市中小學教學研究室高一物理萬有引力理論的成就學案
- 安全執法課件
- 林海雪原考試題和答案
- T-ZSA 232-2024 特種巡邏機器人通.用技術要求
- 工貿企業安全生產臺賬資料
- 2025年浙江名校協作體高三語文2月聯考作文題目解析及范文:“向往”的“苦處”與“樂處”
- epc亮化合同范本
- (期末押題卷)期末質量檢測培優卷-四年級下冊數學期末高頻易錯題
- 《ESD基礎知識培訓》課件
- 1《學會尊重》(說課稿)統編版道德與法治四年級下冊
- 能源資源節約與環保管理制度
- 英語青藍工程徒弟心得體會
- 數據資產入表的探討與思考
評論
0/150
提交評論