B05數(shù)組與字符串-1_第1頁
B05數(shù)組與字符串-1_第2頁
B05數(shù)組與字符串-1_第3頁
B05數(shù)組與字符串-1_第4頁
B05數(shù)組與字符串-1_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章數(shù)組與字符串5.1數(shù)組 5.2字符串5.1數(shù)組5.1.1數(shù)組定義及說明5.1.2數(shù)組應(yīng)用舉例 5.1.1數(shù)組定義及說明1.?dāng)?shù)組基本含義同一類型數(shù)據(jù)元素的有限有序集合元素的類型可以是基本數(shù)據(jù)類型或?qū)ο笠?,可以隨機(jī)訪問數(shù)組中的元素。在Java語言中,數(shù)組是以對(duì)象的形式存在。可以賦值給Object類型的變量,在數(shù)組中可以調(diào)用類Object的所有方法。數(shù)組元素通過數(shù)組名字和非負(fù)整數(shù)下標(biāo)值來引用。下標(biāo)值起始值為0。每個(gè)數(shù)組都有一個(gè)由publicfinal修飾的成員變量:length,即數(shù)組含有元素的個(gè)數(shù)(length可以是正數(shù)或零)5.1.1數(shù)組定義及說明2.?dāng)?shù)組聲明(1)一維數(shù)組聲明 Type數(shù)組名[];例如:inta[]; Type[]數(shù)組名;例如:int[]a;(2)二維數(shù)組聲明 Type數(shù)組名[][];例如:inta[][]; Type[][]數(shù)組名;例如:int[][]a;5.1.1數(shù)組定義及說明說明:聲明數(shù)組時(shí)無需指明數(shù)組元素的個(gè)數(shù),也不為數(shù)組元素分配內(nèi)存空間Type為數(shù)組的類型,可以是基本數(shù)據(jù)類型也可以是引用類型必須經(jīng)過初始化分配內(nèi)存后才能使用。注意:方括號(hào)中無數(shù)字,以下數(shù)組聲明是錯(cuò)誤的。chars[5]; //W5.1.1數(shù)組定義及說明3.?dāng)?shù)組創(chuàng)建數(shù)組名=new數(shù)組元素類型[數(shù)組元素個(gè)數(shù)]說明:(1)數(shù)組元素個(gè)數(shù)可以是常量,也可以是變量。

s=newchar[20];

intn=20; s=newchar[n];(2)聲明和創(chuàng)建可合并:

chars[]=newchar[20];5.1.1數(shù)組定義及說明3.?dāng)?shù)組創(chuàng)建(3)基本類型數(shù)組的每個(gè)元素都是一個(gè)基本類型的變量。引用類型數(shù)組的每個(gè)元素都是對(duì)象的引用。例如:classPoint{intx,y; Point(){x=67;y=10;}

Point(intx,inty) {this.x=x;this.y=y;}}5.1.1數(shù)組定義及說明3.?dāng)?shù)組創(chuàng)建Pointp[];//語句組1p=newPoint[100];//語句組1創(chuàng)建了一個(gè)100個(gè)類型Point的變量。注意:并不創(chuàng)建100個(gè)Point對(duì)象;創(chuàng)建100個(gè)對(duì)象的工作必須分別完成如下:p[0]=newPoint();//語句組2…p[99]=newPoint();//語句組2執(zhí)行語句組1……P[0]……執(zhí)行語句組2P[0]0x12510y67xP[1]0xAE310y67xP[99]0xAF510y67xP[0]P[0]圖5-1內(nèi)存映像圖圖5-1顯示了執(zhí)行語句組1、語句組2后的內(nèi)存映像圖5.1.1數(shù)組定義及說明4.?dāng)?shù)組元素的使用用來指示單個(gè)數(shù)組元素的下標(biāo)必須總是從0開始任何訪問在上述界限之外的數(shù)組元素的企圖都會(huì)引起運(yùn)行時(shí)出錯(cuò)。使用length屬性的例子如下:intlist[]=newint[10];for(inti=0;i<list.length;i++)

System.out.println(list[i]);5.1.1數(shù)組定義及說明5.?dāng)?shù)組的初始化當(dāng)創(chuàng)建一個(gè)數(shù)組時(shí),每個(gè)元素都被初始化。Java語言允許聲明數(shù)組時(shí)初始化:Stringnames[]={"Georgianna","Jen","Simon"};等同于:Stringnames[];names=newString[3];names[0]="Georgianna";names[1]="Jen";names[2]="Simon";5.1.1數(shù)組定義及說明6.多維數(shù)組 Java沒有真正的多維數(shù)組N維數(shù)組是N-1維數(shù)組的數(shù)組。以下是矩陣數(shù)組例子:int

twoDim[][]=newint[4][] twoDim[0]=newint[5]; twoDim[1]=newint[5]; twoDim[2]=newint[5]; twoDim[3]=newint[5];5.1.1數(shù)組定義及說明6.多維數(shù)組 以下是非矩陣數(shù)組例子:int

twoDim[][]=newint[4][] twoDim[0]=newint[2]; twoDim[1]=newint[3]; twoDim[2]=newint[4]; twoDim[3]=newint[5];x0001101112202122233031323334數(shù)組列下標(biāo)數(shù)組行下標(biāo)圖5-2非矩陣數(shù)組內(nèi)存映像圖5.1.1數(shù)組定義及說明7.注意事項(xiàng) ?不允許靜態(tài)說明數(shù)組

下列聲明是錯(cuò)誤的。 chars[5]; //Winta1[5][4]; //W正確聲明為:chars[]; //Rinta1[][]; //R5.1.1數(shù)組定義及說明7.注意事項(xiàng) ?數(shù)組維數(shù)說明順序應(yīng)該從高到低下列聲明是錯(cuò)誤的。 inta[][]=newint[][4]; //W正確聲明為:inta[][]=newint[4][]; //R 5.1.1數(shù)組定義及說明7.注意事項(xiàng) ?數(shù)組維數(shù)的指定只能出現(xiàn)在new運(yùn)算符之后下列聲明是錯(cuò)誤的。 inta[][4]=newint[3][4]; //W正確聲明為:inta[][]=newint[3][4]; //R?Java數(shù)組名是一個(gè)引用,當(dāng)將一個(gè)數(shù)組名賦值給另一個(gè)數(shù)組時(shí),實(shí)際上是名字的復(fù)制。5.1.2數(shù)組應(yīng)用舉例1.Java數(shù)組名是一個(gè)引用【實(shí)例5-1】publicclassArrayExample1{ publicstaticvoidmain(String[]args){

inta[]={10,20,30,40},b[]; b=a;

for(inti=0;i<b.length;i++) b[i]=2*b[i];

for(inti=0;i<a.length;i++)

System.out.println(a[i]); }}5.1.2數(shù)組應(yīng)用舉例1.Java數(shù)組名是一個(gè)引用運(yùn)行輸出結(jié)果為:20406080說明:【實(shí)例5-1】中將數(shù)組b中的元素翻倍后,數(shù)組a中的元素也作了相應(yīng)的變化,這是因?yàn)閍和b都是引用,在這里指向同一對(duì)象。5.1.2數(shù)組應(yīng)用舉例【實(shí)例5-2】classA{ voidsquare(intc[]){

inti;

for(i=0;i<c.length;i++)c[i]=c[i]*c[i]; }}publicclassArrayExample2{ publicstaticvoidmain(String[]args){ Aa=newA();intb[]={10,20,30,40};

a.square(b);

for(inti=0;i<b.length;i++) System.out.println(b[i]); }}5.1.2數(shù)組應(yīng)用舉例【實(shí)例5-2】運(yùn)行輸出結(jié)果為:1004009001600說明:【實(shí)例6-2】中將數(shù)組b中的元素在調(diào)用對(duì)象a中方法square后發(fā)生變化,這是調(diào)用方法時(shí)傳遞的是引用,即形參c和實(shí)參b在這里指向同一地址單元,這樣當(dāng)執(zhí)行方法square時(shí)c指向單元的內(nèi)容發(fā)生的任何改變必將影響數(shù)組b。5.1.2數(shù)組應(yīng)用舉例2.?dāng)?shù)組定義時(shí)數(shù)組元素大小可以是變量【實(shí)例5-3】publicclassArrayExample3{ publicstaticvoidmain(String[]args){

int

i,Num=9,j; for(j=1;j<=Num;j++){

intb[]=newint[j];

for(i=0;i<b.length;i++)b[i]=i+1;

for(i=0;i<b.length;i++) System.out.print((i+1)+"*"+b[i]+"="+(i+1)*b[i]+"");

(""); } }}5.1.2數(shù)組應(yīng)用舉例2.?dāng)?shù)組定義時(shí)數(shù)組元素大小可以是變量【實(shí)例5-3】5.1.2數(shù)組應(yīng)用舉例3.二維數(shù)組是數(shù)組元素為一維數(shù)組的數(shù)組【實(shí)例5-4】publicclassArrayExample4{ publicstaticvoidmain(String[]args){

int

i,j,Num=9;

intb[][]=newint[Num][]; for(j=1;j<=Num;j++) { b[j-1]=newint[j];

for(i=1;i<=b[j-1].length;i++)b[j-1][i-1]=i*j; }5.1.2數(shù)組應(yīng)用舉例3.二維數(shù)組是數(shù)組元素為一維數(shù)組的數(shù)組【實(shí)例5-4】 for(j=1;j<=b.length;j++) {

for(i=1;i<=b[j-1].length;i++)

System.out.print(i+"*"+j+"="+b[j-1][i-1]+"");

(""); } }}5.1.2數(shù)組應(yīng)用舉例3.二維數(shù)組是數(shù)組元素為一維數(shù)組的數(shù)組【實(shí)例5-4】說明:本例定義了一個(gè)不規(guī)則二維數(shù)組b,用于存儲(chǔ)乘法表的結(jié)果,該二維數(shù)組實(shí)際上是一個(gè)原則為一維數(shù)組的一維數(shù)組,“b.length=9”表明數(shù)組b是元素個(gè)數(shù)為9的一維數(shù)組,“b[0].length=1”表明數(shù)組元素b[0]是一個(gè)元素個(gè)數(shù)為1的一維數(shù)組,“b[1].length=2”表明數(shù)組元素b[1]是一個(gè)元素個(gè)數(shù)為2的一維數(shù)組,依此類推,“b[8].length=1”表明數(shù)組元素b[8]是一個(gè)元素個(gè)數(shù)為9的一維數(shù)組。5.2字符串5.2.1String類5.2.2StringBuffer類5.2.3字符串應(yīng)用舉例5.2字符串字符串指的是字符的序列String類:用于存儲(chǔ)和處理字符串常量StringBuffer類:用于存儲(chǔ)和操作字符串變量5.2.1String類一般說明:Java使用java.lang包中的String類字符串常量:用雙引號(hào)括住,"HelloWorld!"1.String類的聲明和創(chuàng)建聲明字符串,如Strings;創(chuàng)建字符串:String(字符串常量);String(chara[]);//字符數(shù)組aString(chara[],intstartIndex,intnumChars);Strings=newString(“hello”);或Strings=“hello”;5.2.1String類2.String類構(gòu)造函數(shù):?publicString():該構(gòu)造函數(shù)用于創(chuàng)建一個(gè)空的字符串常量。Stringempty=newString();等價(jià)于使用直接量“”初始化字符串Stringempty=“”;?publicString(Stringvalue):該構(gòu)造函數(shù)用于根據(jù)一個(gè)已經(jīng)存在的字符串常量來創(chuàng)建一個(gè)新的字符串常量,該字符串的內(nèi)容和已經(jīng)存在的字符串常量一致。?publicString(chara[])或String(chara[],intstartIndex,intnumChars):該構(gòu)造函數(shù)用于根據(jù)一個(gè)已經(jīng)存在的字符數(shù)組來創(chuàng)建一個(gè)新的字符串常量。5.2.1String類2.String類構(gòu)造函數(shù):char[]ch={‘H’,’e’,’l’,’l’,’o’};StringhelloString=newString(ch);StringheString=newString(ch,0,2);System.out.println(helloString);System.out.println(heString);結(jié)果為:Hellohe?publicString(StringBufferbuffer):該構(gòu)造函數(shù)用于根據(jù)一個(gè)已經(jīng)存在的StringBuffer對(duì)象來創(chuàng)建一個(gè)新的字符串常量。5.2.1String類3.String類的常用方法?獲取字符串的長度Strings=“Hello”;n=s.length();//結(jié)果5?判斷字符串前綴或后綴與已知字符串是否相同

s.startsWith(“he”)//falseendsWith(“l(fā)o”)//true?比較兩個(gè)字符串:s=“Hello”s.equals(“Hello”)//trues.equals(“hello”)//false5.2.1String類3.String類的常用方法?把字符串轉(zhuǎn)化為數(shù)值Integer.parseInt(“4567”);Integer.parseLong(“123”);Float.valueOf(“12.3”).floatValue();Double.valueOf(“12.3”).doubleValue();?數(shù)值轉(zhuǎn)化為字符串String.valueof(123.567);結(jié)果為”123.567”?替換字符、去掉字符串前后空格s.replace(‘l’,’m’);//l被m替換s.trim();//去掉字符串s前后空格:5.2.1String類3.String類的常用方法?字符串檢索Strings=“Hello”;s.indexof(“l(fā)”);//值是2s.indexof(“w”,2);//從第2位置開始,沒有為-1?求字符串的子串substring(intstartpoint),substring(intstart,intend),?字符串連接Strings=“Hello!”;Stringt=s.concat(“Susan.”);t的內(nèi)容為“Hello!Susan”5.2.1String類4.字符串與基本數(shù)據(jù)類型間的轉(zhuǎn)換String類提供了以下靜態(tài)方法獲得其它基本數(shù)據(jù)類型值的字符串表示:staticStringvalueOf(boolean)staticStringvalueOf(char)staticStringvalueOf(float)staticStringvalueOf(double)staticStringvalueOf(int)staticStringvalueOf(long)staticStringvalueOf(Object)5.2.1String類4.字符串與基本數(shù)據(jù)類型間的轉(zhuǎn)換除Boolean類外,每個(gè)包裝器類都提供了一個(gè)靜態(tài)方法parseXXX,將字符串對(duì)象轉(zhuǎn)換為對(duì)應(yīng)的基本數(shù)據(jù)類型值byteByte.parseByte(String)intInteger.parseInt(String)longLong.parseLong(String)floatFloat.parseFloat(String)doubleDouble.parseDouble(String)newBoolean(String).booleanValue()5.2.1String類5.關(guān)于String類的補(bǔ)充說明:String類創(chuàng)建的字符串對(duì)象是不可修改的,也就是說,String字符串不能修改、刪除或替換字符串中的某個(gè)字符,即String對(duì)象一旦創(chuàng)建,那么實(shí)體是不可以再發(fā)生變化的。5.2.2StringBuffer類 StringBuffer類能創(chuàng)建可修改的字符串序列,也就是說,該類的對(duì)象的實(shí)體的內(nèi)存空間可以自動(dòng)的改變大小,便于存放一個(gè)可變的字符串。1.StringBuffer類的聲明與創(chuàng)建StringBufferstr;//聲明str=newStringBuffer(“Hello”);//創(chuàng)建5.2.2StringBuffer類2.StringBuffer類的構(gòu)造方法StringBuffer():建立一個(gè)長度為16的字符緩沖區(qū)StringBuffer(intsize):建立一個(gè)長度為size的字符緩沖區(qū)StringBuffer(Strings):初始化緩沖區(qū)內(nèi)容為給定的字符串s,并另外分配16個(gè)字符空間。當(dāng)該對(duì)象的實(shí)體存放的字符序列的指定長度時(shí),實(shí)體的容量自動(dòng)地增加,以便存放所增加的字符。5.2.2StringBuffer類3.StringBuffer類的常用方法publicintlength():返回字符串的個(gè)數(shù)publicintcapacity():返回字符串緩沖區(qū)的程度,即總的可供分配的字符存儲(chǔ)單元。publicStringBufferappend():將指定的參數(shù)對(duì)象轉(zhuǎn)化為字符串,附加到原來的字符串對(duì)象之后。publiccharcharAt(intn):返回字符串中n位置上的字符,n的范圍為0~length()-1。publicvoidsetCharAt(intn,charch):設(shè)置當(dāng)前緩沖區(qū)第n位置的字符值為參數(shù)ch指定的值。5.2.2StringBuffer類3.StringBuffer類的常用方法publicStringBufferinsert(intindex,Objectobj):將指定的對(duì)象轉(zhuǎn)換為字符串,插入指定的位置。publicStringBufferreverse():StringBuffer對(duì)象使用reverse()方法將該對(duì)象實(shí)體中的字符翻轉(zhuǎn),并返回當(dāng)前對(duì)象的引用。StringBufferdelete(intstart,intend):刪除從start到end-1的子字符串。StringBufferreplace(intstart,intend,Stringstr):將start到end-1之間的子字符串用str替換。5.2.3字符串應(yīng)用舉例1.String型字符串【實(shí)例5-5】publicclassStringExample1{ publicstaticvoidmain(String[]args){ Stringstr=newString("A");

("調(diào)用前str="+str); operate(str);

("調(diào)用后str="+str); } staticvoidoperate(Stringstr1){ str1="ABC"; System.out.println("str1="+str1); }}5.2.3字符串應(yīng)用舉例1.String型字符串【實(shí)例5-5】運(yùn)行結(jié)果為:調(diào)用前str=Astr1=ABC調(diào)用后str=A說明:調(diào)用operate方法時(shí),傳入了引用str的拷貝str1,str1指向原引用str所指向的對(duì)象。執(zhí)行語句“str1="ABC";”后,str1指向另一個(gè)新的對(duì)象(即字符串“ABC”),而引用str所指向的對(duì)象沒有發(fā)生改變。調(diào)用operate方法時(shí)執(zhí)行operate方法時(shí)調(diào)用operate前A0xc21str10x325strA0x325str調(diào)用operate后A0x325strA0xc21str10x325strABC圖5-3顯示了程序執(zhí)行中內(nèi)存映像。5.2.3字符串應(yīng)用舉例2.StringBuffer型字符串【實(shí)例5-6】publicclassStringBufferExample1{ publicstaticvoidmain(String[]args){

StringBuffera=newStringBuffer("A");

StringBufferb=newStringBuffer("B"); operate(a,b);

System.out.println("a="+a+"b="+b); } staticvoidoperate(StringBufferx,StringBuffery){

x.append(y); y=x;

System.out.println("x="+x+"y="+x); }}5.2.3字符串應(yīng)用舉例2.StringBuffer型字符串【實(shí)例5-6】運(yùn)行結(jié)果:x=ABy=ABa=ABb=B說明:調(diào)用operate方法時(shí),傳入了兩個(gè)引用a,b的拷貝x,y,這兩個(gè)x,y都指向原a,b引用所指向的對(duì)象。x.append(y)對(duì)它指向的對(duì)象(即a指向的對(duì)象)進(jìn)行了操作。而x=y,只是兩個(gè)拷貝變量在賦值,并沒有影響到原b所指向的對(duì)象。所以b所指向的對(duì)象仍然為B。調(diào)用operate方法時(shí)執(zhí)行operate方法時(shí)調(diào)用operate前A0xc21x0x325aB0x315y0x423bAB0xc21x0x325aB0x315y0x423bB0x423bA0x325a調(diào)用operate后B0x423bAB0x325a5.2.3字符串應(yīng)用舉例3.算術(shù)運(yùn)算模擬【實(shí)例5-7】publicclassarithSimulateExample1{ publicstaticvoidmain(String[]args){ doubledata1,data2,result=0; charoperate='+';

booleanflag=true; if

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論