Java程序設(shè)計(jì)進(jìn)階1-數(shù)組(帶答案)課件_第1頁(yè)
Java程序設(shè)計(jì)進(jìn)階1-數(shù)組(帶答案)課件_第2頁(yè)
Java程序設(shè)計(jì)進(jìn)階1-數(shù)組(帶答案)課件_第3頁(yè)
Java程序設(shè)計(jì)進(jìn)階1-數(shù)組(帶答案)課件_第4頁(yè)
Java程序設(shè)計(jì)進(jìn)階1-數(shù)組(帶答案)課件_第5頁(yè)
已閱讀5頁(yè),還剩30頁(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)介

算法與程序設(shè)計(jì)基礎(chǔ)2016-9Email:luyou@電子與信息工程學(xué)院計(jì)算機(jī)科學(xué)與工程系陸悠算法與程序設(shè)計(jì)基礎(chǔ)2016-9電子與信息工程學(xué)院計(jì)算機(jī)科學(xué)1入門階段Java程序設(shè)計(jì)進(jìn)階1數(shù)組的概念01數(shù)組的聲明和創(chuàng)建02數(shù)組元素的引用03常用的數(shù)組方法、屬性04數(shù)組入門階段Java程序設(shè)計(jì)進(jìn)階1數(shù)組的概念01數(shù)組的聲明和創(chuàng)建2PARTONE數(shù)組的概念PART數(shù)組的概念3數(shù)組4數(shù)組的概念問(wèn)題從鍵盤上輸入10個(gè)數(shù)字,找出其中的最大數(shù)。inta,b,c,d,e,f,g,h,i,j;intm;//數(shù)據(jù)輸入到變量中m=max(a,b);m=max(c,m);m=max(d,m);:m=max(j,m);如果是100個(gè)數(shù)字,還能這樣處理嗎?數(shù)組4數(shù)組的概念問(wèn)題如果是100個(gè)數(shù)字,還能這樣處理嗎?數(shù)組5數(shù)組的概念程序中出現(xiàn)多個(gè)具有相同類型的變量,而且要對(duì)它們做相同或類似的操作。如果把這些變量定義成獨(dú)立的變量,則程序顯得很煩瑣。JAVA語(yǔ)言提供了一種構(gòu)造類型–數(shù)組,它能解決上面的問(wèn)題數(shù)組5數(shù)組的概念程序中出現(xiàn)多個(gè)具有相同類型的變量,而且要對(duì)它數(shù)組6數(shù)組的概念在程序設(shè)計(jì)中,為了處理方便,把具有相同類型的若干變量按有序的形式組織起來(lái)。這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組數(shù)組是相同類型的變量按順序組成的一種復(fù)合數(shù)據(jù)類型稱這些相同類型的變量為數(shù)組的元素或單元數(shù)組通過(guò)數(shù)組名加索引來(lái)使用數(shù)組的元素。索引從0開(kāi)始在JAVA語(yǔ)言中,數(shù)組屬于構(gòu)造數(shù)據(jù)類型(非基本數(shù)據(jù)類型,亦是引用型數(shù)據(jù))。一個(gè)數(shù)組可以分解為多個(gè)數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型數(shù)組6數(shù)組的概念在程序設(shè)計(jì)中,為了處理方便,把具有相同類型的數(shù)組7數(shù)組的概念與其他引用型最大差別在于:數(shù)組是數(shù)據(jù)組織形式,可批量定義空間,并隨機(jī)存取數(shù)組相關(guān)概念Java中的數(shù)組是動(dòng)態(tài)數(shù)組,涉及如下概念:數(shù)組引用、數(shù)組對(duì)象、數(shù)組下標(biāo)、數(shù)組元素等;數(shù)組相關(guān)操作數(shù)組操作:引用;如:a.length數(shù)組元素:按下標(biāo)引用。如a[0]數(shù)組7數(shù)組的概念與其他引用型最大差別在于:PARTTWO數(shù)組的聲明和創(chuàng)建PART數(shù)組的89數(shù)組的聲明聲明一維數(shù)組有下列兩種格式:數(shù)組的元素類型數(shù)組名字[];如:typearrayName[];

數(shù)組的元素類型[]數(shù)組名字;如:type[]arrayName;類型(type)可以為Java中任意的數(shù)據(jù)型,包括簡(jiǎn)單類型和復(fù)合類型。例如:floatboy[];或float[]boy;數(shù)組9數(shù)組的聲明聲明一維數(shù)組有下列兩種格式:數(shù)組10數(shù)組的聲明聲明2維數(shù)組有下列兩種格式:數(shù)組的元素類型數(shù)組名字[][];typearrayName[][];數(shù)組的元素類型[][]數(shù)組名字;type[][]arrayName;例如:charcat[][];或char[][]cat;注意:數(shù)組boy的元素可以存放float型數(shù)據(jù)、數(shù)組cat的元素可以存放char型數(shù)據(jù)。數(shù)組10數(shù)組的聲明聲明2維數(shù)組有下列兩種格式:數(shù)組11數(shù)組的聲明數(shù)組的元素的類型可以是Java的任何一種類型。假如已經(jīng)聲明了一種People類型數(shù)據(jù),那么可以如下聲明一個(gè)數(shù)組:Peoplechina[];

則數(shù)組china的元素可以存放People類型的數(shù)據(jù)。數(shù)組數(shù)組的聲明僅僅是宣告定義,聲明后并不能直接使用數(shù)組,必須對(duì)數(shù)組進(jìn)行創(chuàng)建(初始化)工作后才能對(duì)其進(jìn)行操作?。?1數(shù)組的聲明數(shù)組的元素的類型可以是Java的任何一種類型。12數(shù)組的創(chuàng)建為數(shù)組分配內(nèi)存空間的格式如下:數(shù)組名字=new數(shù)組元素的類型[數(shù)組元素的個(gè)數(shù)];例如:boy=newfloat[4];為數(shù)組分配內(nèi)存空間后,數(shù)組boy獲得4個(gè)用來(lái)存放float類型數(shù)據(jù)的內(nèi)存空間,即4個(gè)float型元素。boy0x785BAboy[0]boy[1]boy[2]boy[3]數(shù)組變量boy中存放著這些內(nèi)存單元的首地址,該地址稱作數(shù)組的引用,這樣數(shù)組就可以通過(guò)索引操作這些內(nèi)存單元。數(shù)組12數(shù)組的創(chuàng)建為數(shù)組分配內(nèi)存空間的格式如下:boy0x713數(shù)組的創(chuàng)建聲明數(shù)組和創(chuàng)建可以一起完成例如:floatboy[]=newfloat[4];二維數(shù)組和一維數(shù)組一樣,在聲明之后必須用new運(yùn)算符分配內(nèi)存空間例如:intmytwo[][];mytwo=newint[3][4];或intmytwo[][]=newint[3][4];具體創(chuàng)建過(guò)程即初始化方法見(jiàn)后述數(shù)組13數(shù)組的創(chuàng)建聲明數(shù)組和創(chuàng)建可以一起完成數(shù)組14數(shù)組的初始化一維數(shù)組的初始化靜態(tài)初始化

intintArray[]={1,2,3,4};

StringstringArray[]={"abc","How","you"};動(dòng)態(tài)初始化:簡(jiǎn)單類型的數(shù)組

intintArray[];intArray=newint[5];數(shù)組14數(shù)組的初始化一維數(shù)組的初始化數(shù)組15數(shù)組的初始化一維數(shù)組的初始化動(dòng)態(tài)初始化:復(fù)合類型的數(shù)組

StringstringArray[];StringstringArray=newString[3];//為數(shù)組中每個(gè)元素開(kāi)辟引用空間(32位)stringArray[0]=newString("How");//為第一個(gè)數(shù)組元素開(kāi)辟空間

stringArray[1]=newString("are");//為第二個(gè)數(shù)組元素開(kāi)辟空間

stringArray[2]=newString("you");//為第三個(gè)數(shù)組元素開(kāi)辟空間數(shù)組15數(shù)組的初始化一維數(shù)組的初始化數(shù)組PARTTHREE數(shù)組元素的引用PART數(shù)組元素的引用1617數(shù)組元素的使用一維數(shù)組通過(guò)索引符訪問(wèn)自己的元素,如boy[0],boy[1]等。注意:索引從0開(kāi)始,數(shù)組若有7個(gè)元素,那么索引到6為止,如果程序使用了如下語(yǔ)句:boy[7]=384.98f;程序運(yùn)行時(shí)將發(fā)生.ArrayIndexOutOfBoundsException異常,因此在使用數(shù)組時(shí)必須謹(jǐn)慎,防止索引越界。數(shù)組17數(shù)組元素的使用一維數(shù)組通過(guò)索引符訪問(wèn)自己的元素,如數(shù)組18數(shù)組元素的使用二維數(shù)組也通過(guò)索引符訪問(wèn)自己的元素,如a[0][1],a[1][2]等;需要注意的是索引從0開(kāi)始,比如聲明創(chuàng)建了一個(gè)二維數(shù)組a:inta[][]=newint[2][3];那么第一個(gè)索引的變化范圍從0到1,第二個(gè)索引變化范圍從0到2數(shù)組18數(shù)組元素的使用二維數(shù)組也通過(guò)索引符訪問(wèn)自己的元素,如a[PARTFOUR常用的數(shù)組方法、屬性PART常用的數(shù)組19數(shù)組數(shù)組的常用方法、屬性Length屬性數(shù)組的元素的個(gè)數(shù)稱作數(shù)組的長(zhǎng)度。對(duì)于一維數(shù)組,“數(shù)組名字.length”的值就是數(shù)組中元素的個(gè)數(shù)。對(duì)于二維數(shù)組“數(shù)組名字.length”的值是它含有的一維數(shù)組的個(gè)數(shù)。對(duì)于floata[]=newfloat[12];a.length的值12對(duì)于intb[][]=newint[3][6];b.length的值是320數(shù)組數(shù)組的常用方法、屬性Length屬性20數(shù)組數(shù)組的常用方法、屬性數(shù)組的初始化創(chuàng)建數(shù)組后,系統(tǒng)會(huì)給每個(gè)數(shù)組元素一個(gè)默認(rèn)的值,如,float型是0.0。在聲明數(shù)組同時(shí)也可以給數(shù)組的元素一個(gè)初始值,如:floatboy[]={21.3f,23.89f,2.0f,23f,778.98f};也可以直接用若干個(gè)一維數(shù)組初始化一個(gè)二維數(shù)組。21數(shù)組數(shù)組的常用方法、屬性數(shù)組的初始化21數(shù)組數(shù)組的引用數(shù)組屬于引用型變量,因此兩個(gè)相同類型的數(shù)組如果具有相同的引用,它們就有完全相同的元素。例如,對(duì)于inta[]={1,2,3},b[]={4,5};

如果使用了下列賦值語(yǔ)句(a和b的類型必須相同):a=b;那么a中存放的引用和b的相同。22數(shù)組數(shù)組的引用數(shù)組屬于引用型變量,因此兩個(gè)相同類型的數(shù)組如數(shù)組數(shù)組的遍歷for(typevarName:arrayName) System.out.print(varName);示例inta[]={1,2,3,4,5};for(inti:a){System.out.println(i);}23數(shù)組數(shù)組的遍歷for(typevarName:arra數(shù)組多維數(shù)組1、二維數(shù)組的定義

typearrayName[][];

type[][]arrayName;n維數(shù)組(n≥2)可視為一個(gè)一維數(shù)組,每一數(shù)組元素是一個(gè)n-1維數(shù)組。此視角對(duì)簡(jiǎn)化多維數(shù)組處理十分有益。注意:數(shù)組聲明,僅僅創(chuàng)建了引用名,未創(chuàng)建數(shù)組對(duì)象24數(shù)組多維數(shù)組1、二維數(shù)組的定義24數(shù)組多維數(shù)組靜態(tài)初始化

intintArray[][]={{1,2},{2,3},{3,4,5}};

動(dòng)態(tài)初始化

inta[][]=newint[2][3];例:inta[][]=newint[2][];

a[0]=newint[3];

a[1]=newint[5];對(duì)二維復(fù)合數(shù)據(jù)類型的數(shù)組,必須首先為最高維分配引用空間,然后再順次為低維分配空間。而且,必須為每個(gè)數(shù)組元素單獨(dú)分配空間。25數(shù)組多維數(shù)組靜態(tài)初始化25數(shù)組多維數(shù)組二維數(shù)組元素的引用對(duì)二維數(shù)組中的每個(gè)元素,引用方式為: arrayName[index1][index2]

例如:num[1][0];二維數(shù)組舉例:Array2D.java26數(shù)組多維數(shù)組二維數(shù)組元素的引用26數(shù)組與數(shù)組有關(guān)的常見(jiàn)錯(cuò)誤數(shù)組下標(biāo)越界變量聲明時(shí)指明元素?cái)?shù)組個(gè)數(shù)。下面幾句均產(chǎn)生編譯錯(cuò)int[3]x;int[3][]a;或int[][3]a;int[3][4]b;int[3]y=newint[3];Int[3]z={1,2,3}原因分析:數(shù)組類型只能如int[],不能如int[n].否則int[3]和int[4]類型不同,不能相互賦值。進(jìn)而導(dǎo)致“數(shù)組對(duì)象在堆空間創(chuàng)建”帶來(lái)的好處,如動(dòng)態(tài)創(chuàng)建數(shù)組、數(shù)組元素?cái)?shù)量“可變”、多維不規(guī)則數(shù)組等特色,幾乎喪失殆盡。27數(shù)組與數(shù)組有關(guān)的常見(jiàn)錯(cuò)誤數(shù)組下標(biāo)越界27數(shù)組與數(shù)組有關(guān)的常見(jiàn)錯(cuò)誤多維數(shù)組的創(chuàng)建錯(cuò)誤。例如int[][]x=newint[3][];//正確;----語(yǔ)句1int[][]y=newint[][3];//錯(cuò)誤;----語(yǔ)句2原因分析:創(chuàng)建對(duì)象,必須要能確定對(duì)象所占空間的大小。語(yǔ)句1可以可以確定所需空間大小;語(yǔ)句2不能。28數(shù)組與數(shù)組有關(guān)的常見(jiàn)錯(cuò)誤多維數(shù)組的創(chuàng)建錯(cuò)誤。例如28PARTFIVE課堂練習(xí)PART課堂練習(xí)29課堂練習(xí)30習(xí)題1、下列數(shù)組的聲明形式錯(cuò)誤的是(B)A、floata[]B、floata[5]C、inta[]=newint[5]D、float[]a2、為了定義三個(gè)整數(shù)數(shù)組a1a2a3,下面聲明語(yǔ)句正確的是(B)A、intArray[]a1,a2;inta3[]={1,2,3,4,5};B、int[]a1,a2;inta3[]={1,2,3,4,5};C、inta1,a2[];inta3={1,2,3,4,5}D、int[]a1,a2;inta3[]=(1,2,3,4,5);3、若有byte[]x={1,2,3,4},其中0<=k<=3,對(duì)x數(shù)組元素錯(cuò)誤的引用是(C)A、x[5-3]B、x[k]C、x[k+5]D、

溫馨提示

  • 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)論