第3章JAVA數(shù)組向量字符串(12級)_第1頁
第3章JAVA數(shù)組向量字符串(12級)_第2頁
第3章JAVA數(shù)組向量字符串(12級)_第3頁
第3章JAVA數(shù)組向量字符串(12級)_第4頁
第3章JAVA數(shù)組向量字符串(12級)_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章字符串、數(shù)組和向量字符串學(xué)習(xí)的任務(wù)從一個帶有路徑的文件名中分離出文件名和路徑C:\ProgramFiles\Jdk\readme.html字符串在Java中,字符串被當(dāng)作對象來處理。字符串分類字符串常量創(chuàng)建之后不能再修改。用String類來創(chuàng)建字符串常量。字符串變量創(chuàng)建之后可以做修改。一般用StringBuffer類來創(chuàng)建。String類和StringBuffer類都在java.lang包中。類String字符串定義可以用字符串常量直接初始化一個String對象

Strings="HelloWorld";通過構(gòu)造方法構(gòu)造方法說明String()它將創(chuàng)建一個空字符串 String(Stringoriginal)根據(jù)指定字符串,創(chuàng)建一個新字符串String(char[]value)根據(jù)字符數(shù)組構(gòu)造一個新字符串String(byte[]value)根據(jù)指定的字節(jié)數(shù)組,新建一個字符串charchars[]={‘a(chǎn)’,‘b’,‘c’}; Strings=newString(chars);Strings=newString(“hello”);或:Strings=“hello”;Strings=newString();bytebytestr[]={97,98,99};Strings=newString(bytestr);字符串變量和普通變量的區(qū)別String構(gòu)造方法的使用舉例

publicstaticvoidmain(String[]args){Strings,s1,s2,s3,s4,s5,s6,s7;bytebyteArray[]

={(byte)'J',(byte)'a',(byte)'v',(byte)'a'};charcharArray[]={'程','序','設(shè)','計','課','程'};StringBufferss=newStringBuffer("歡迎");s=newString("Hello!");s1=newString();s2=newString(s); s3=newString(charArray);

s4=newString(charArray,2,4);

s5=newString(byteArray);s6=newString(byteArray,0,1);}}Hello!Hello!程序設(shè)計課程設(shè)計課程JavaJ字符串長度由length()

方法確定語法publicintlength();返回字符串中的字符數(shù)String的常用方法—字符串長度Stringname="JohnSmith";System.out.println(name.length());String的常用方法—字符串比較字符串變量1字符串變量2字符串變量1字符串變量2由equals()方法確定檢查字符串變量指向的字符串是否相等同一個對象用==運算符檢查檢查字符串變量是否指向同一個字符串對象

publicclassStringCompare{publicstaticvoidmain(String[]args){ Strings1="abc"; Strings2="abcd";

System.out.println(s1==s2); System.out.println(s1.equals(s2));Stringt1=newString("abc"); Stringt2=newString("abc");

System.out.println(t1==t2); System.out.println(t1.equals(t2)); Stringt3=t1; System.out.println(t1==t3); System.out.println(t1.equals(t3));}}字符串比較舉例falsefalsefalsetruetruetrue程序運行結(jié)果如下:字符串比較方法方法說明booleanequalsIgnoreCase(Stringvalue)比較兩個字符串,忽略大小寫intcompareTo(Stringvalue)比較兩個字符串,返回兩者之間的差值。如果兩個字符串相等,則返回0。booleanstartsWith(Stringvalue)檢查一個字符串是否以另一個字符串開始booleanendsWith(Stringvalue)檢查一個字符串是否以另一個字符串結(jié)束字符串連接

在Java中,運算符“+”可以用來實現(xiàn)字符串的連接,如:

Strings=“Heis”+age+”yearsold.”

假設(shè)整數(shù)型變量age的值為15,那么,s的值為

“Heis15yearsold”。搜索字符和字符串字符串1情形1:indexOf(character)方法找到第一個匹配索引

0123情形2:如果沒有找到匹配,則返回-1返回找到的第一個匹配的位置索引方法說明intindexOf(intch)返回字符ch在字符串中出現(xiàn)的第一個位置intlastIndexOf(intch)返回字符ch在字符串中出現(xiàn)的最后一個位置intindexOf(Stringstr)

返回子串str首字符在字符串中第一次出現(xiàn)的位置intlastindexOf(Stringstr)返回子串str首字符在字符串中最后出現(xiàn)的位置搜索字符和字符串搜索字符串舉例_判斷郵箱正確性publicclassSearchString{publicstaticvoidmain(String[]args){ Stringemail="JohnSmith@123.com"; intn1=email.indexOf('@'); intn2=email.indexOf('.'); if(n1<n2){ System.out.println(“該電子郵件地址有效"); }else{ System.out.println(“該電子郵件地址無效"); }}}郵箱格式:XXX@XXX.com判斷:@應(yīng)該在.之前字符串提取、連接、替換等方法方法說明publiccharcharAt(intindex)從指定位置提取單個字符,該位置由索引指定,索引中的值必須為非負(fù)publicStringsubstring(intindex)提取從位置索引開始的字符串部分publicStringsubstring(intbeginindex,intendindex)提取beginindex(包含)和endindex(不包含)位置之間的字符串部分publicStringconcat(Stringstr)連接兩個字符串,并新建一個包含調(diào)用字符串的字符串對象publicStringreplace(charold,charnew)將調(diào)用字符串中出現(xiàn)某個字符的所有位置都替換為另一個字符publicStringtrim()將調(diào)用字符串的前后空格刪掉publicStringtoLowerCase()把串中的所有字符轉(zhuǎn)換成小寫。publicStringtoUpperCase()把串中的所有字符轉(zhuǎn)換成大寫。String[]split(String

regex)

根據(jù)給定正則表達(dá)式的匹配拆分此字符串。字符串應(yīng)用舉例

publicclassStringMethods{ publicstaticvoidmain(String[]args){ Strings1="Helloworld"; Strings2="Hello"; System.out.println(s1.substring(3,8)); System.out.println(s2.concat("World")); System.out.println(s2.replace('l','w')); System.out.println(s1.trim()); }}lowoHelloWorldHewwoHelloworld更改字符大小寫方法Hello使用toUpperCase()方法HELLOHELLO使用toLowerCase()方法hello語法publicStringtoUpperCase();語法PublicStringtoLowerCase();更改字符大小寫方法舉例

publicclassStringTest{ publicstaticvoidmain(String[]args){ Stringname=newString("George"); System.out.println(“姓名是"+name); intlength=name.length(); System.out.println(“姓名的長度為”+length+“個字符"); System.out.println(“姓名用大寫形式表示為:"); StringnameUppercase=name.toUpperCase(); System.out.println(nameUppercase);}}任務(wù)實現(xiàn):分離文件名和路徑public

classHelloWorldApp{ public

static

voidmain(String[]args){StringfullPath="F:\\java\\myexample\\a.java";intpos=fullPath.lastIndexOf("\\");System.out.println(fullPath.substring(0,pos));System.out.println(fullPath.substring(pos+1));}}C:\ProgramFiles\Jdk\readme.html字符串與模式匹配regionMatches

booleanregionMatches (inttoffset,Stringother,intooffset,intlen) booleanregionMatches (booleanignoreCase,inttoffset,Stringother, intooffset,intlen)

上述兩個方法都是用來進行模式匹配的,匹配成功則返回true,否則返回false。其中,toffset和ooffset分別指明當(dāng)前字符串和參數(shù)字符串中所要比較的子串的起始索引位置,len指明比較的長度,而ignoreCase指明比較時是否區(qū)分大小寫。對于第一種方法,比較是區(qū)分大小寫的。classzcf{publicstaticvoidmain(String[]arg){ Stringstr1="12abc56rg"; Stringstr2="sfabc16"; inti,j,k;

for(i=1;i<str1.length();i++)//子串的長度從1開始

for(j=0;j<str1.length();j++)//str1的子串

//判斷str1中的子串是否在str2中出現(xiàn)

for(k=0;k<=str2.length();k++)

if(str1.regionMatches(j,str2,k,i))System.out.println(str1.substring(j,j+i));//截取子串}}找兩個字符串出現(xiàn)的相同子串Str1:12abc56rgStr2:sfabc161abc6abbcabc字符串與基本數(shù)據(jù)的相互轉(zhuǎn)化各種基本數(shù)據(jù)類型與String類型之間可以通過方法相互轉(zhuǎn)換。String類中的valueOf()系列方法用于從基本數(shù)據(jù)類型轉(zhuǎn)換成字符串。publicstaticStringvalueOf(Booleanb)publicstaticStringvalueOf(charc)publicstaticStringvalueOf(inti)publicstaticStringvalueOf(longl)publicstaticStringvalueOf(floatf)publicstaticStringvalueOf(doubled)將字符串轉(zhuǎn)化為基本數(shù)據(jù)類型Java.lang包中的各種基本數(shù)據(jù)類型類都具有相應(yīng)的類方法實現(xiàn)轉(zhuǎn)化操作。publicstaticbyteparseByte(Strings)publicstaticshortparseShort(Strings)publicstaticlongparseLong(Strings)publicstaticintparseInt(Strings)publicstaticfloatparseFloat(Strings)publicstaticdoubleparseDouble(Strings)Strings=“123”;inti=Integer.parseInt(s);字符串與基本數(shù)據(jù)的相互轉(zhuǎn)化字符串與字符數(shù)組的轉(zhuǎn)化字符數(shù)組轉(zhuǎn)換為字符串對象String(char[])String(char[],intoffset,intlength)字符串轉(zhuǎn)換為字符數(shù)組publicchar[]toCharArray()

初始化一個字符數(shù)組,該數(shù)組的長度與字符串長度相等,并將字符串對象的全部字符復(fù)制到該數(shù)組中。publicvoidgetChars(int

start,int

end,char

c[],intoffset)

將當(dāng)前字符串中從start至end-1位置上的字符復(fù)制到數(shù)組c中,并從數(shù)組c的offset處開始存放。字符串與字節(jié)數(shù)組用字節(jié)數(shù)組創(chuàng)建字符串對象String(byte[])String(byte[],intoffset,intlength)將字符串轉(zhuǎn)換為字節(jié)數(shù)組publicbyte[]getBytes()

將當(dāng)前字符串轉(zhuǎn)化為一個字節(jié)數(shù)組。字符串與字節(jié)數(shù)組的轉(zhuǎn)化例:publicclassExample5_10{publicstaticvoidmain(Stringargs[]){byted[]="你我他".getBytes();System.out.println("數(shù)組d的長度是:"+d.length);Strings=newString(d,0,2);System.out.println(s);}}例:publicclassExample5_8{ publicstaticvoidmain(Stringargs[]){ Strings=“華北電力大學(xué)計算機專業(yè)"; charc[]=s.toCharArray(),d[]; d=newchar[6]; s.getChars(8,14,d,0); System.out.println(c); System.out.println(d);}}java.util包中StringTokenizer類所定義的對象,可以用來對字符串進行分析。比如一個句子、一個段落,一篇文章字、詞個數(shù)統(tǒng)計等。StringTokenizer類的兩個常用構(gòu)造方法:StringTokenizer(Strings)為字符串s構(gòu)造一個分析器,使用默認(rèn)的分隔符集合,即空格符、換行符、回車符、Tab符、進紙符。StringTokenizer(String

s,String

delim)為字符串s構(gòu)造一個分析器,參數(shù)delim中的字符作為分隔符。StringTokenizer類—字符串詞法分析器StringTokenizer類的成員方法nextToken():逐個獲取字符串的每一個語言符號單位hasMoreTokens():判斷字符串中是否還有語言符號countTokens():統(tǒng)計字符串中共有多少個語言符號importjava.util.*;publicclassExample5_7{publicstaticvoidmain(Stringargs[]){Strings="IamJames,sheismygirlfriend";StringTokenizerfenxi=newStringTokenizer(s,",");intnumber=fenxi.countTokens();while(fenxi.hasMoreTokens()){Stringstr=fenxi.nextToken();System.out.println(str);

System.out.println("還剩"+fenxi.countTokens()+"個單詞");}System.out.println("s共有單詞:"+number+"個");}}程序運行結(jié)果:不變性String類創(chuàng)建后直接修改不變性的概念解決方法StringBuffer類String的對等類表示可增加和可編寫字符的可變序列將字符插入到字符串中間或附加到字符串末尾StringBuffer類構(gòu)造方法說明publicStringBuffer()分配長16字符的字符緩沖區(qū)publicStringBuffer(intlength)分配長度為length的空緩沖區(qū)publicStringBuffer(Stringvalue)接收字符串作為初值,后面再留16個字符的空緩沖區(qū)。

StringBuffer

用于表示可以修改的字符串使用連接運算符(+)的字符串會自動創(chuàng)建字符串緩沖對象StringBuffer類的方法方法說明intlength()返回StringBuffer對象的長度publicvoidsetLength (intnewLength)明確地定義字符串的長度。如果newlength大于現(xiàn)在的長度,串尾將補0,如果小于,那么newlength后的字符將丟失。intcapacity()

返回字符串緩沖區(qū)的長度,即總的可供分配的字符個數(shù)。voidsetCharAt(intpos,charch)使用ch指定的新值設(shè)置pos指定的位置上的字符StringtoString()轉(zhuǎn)換為字符串形式StringBuffer類的方法方法說明StringBufferinsert(intoffset,Strings)在指定位置插入指定的字符串publicStringBufferappend(對象類型對象名)將指定的參數(shù)對象轉(zhuǎn)化成字符串,附加在原來的字符串對象之后。StringBufferreverse()將此字符序列用其反轉(zhuǎn)形式取代

StringBufferdelete(intstart,intend)刪除調(diào)用對象中從start位置開始直到end指定的索引–1位置的字符序列。StringBufferdeleteCharAt(intpos)刪除pos指定的索引處的字符StringBufferreplace(intstart,intend,Strings)使用字符串s替換調(diào)用字符串中從start開始到end結(jié)束的子字符串。String與StringBuffer的轉(zhuǎn)換產(chǎn)生一個內(nèi)容與String對象str相同的StringBufffer對象:StringBufferss=newStringBuffer(str);

產(chǎn)生一個內(nèi)容與StringBuffer對象ss相同的String對象:Strings=ss.toSting();classdemoOfStringBuffer{publicstaticvoidmain(Stringbuf[]){StringBufferss=newStringBuffer("abc");System.out.println("buffer="+ss);System.out.println(“l(fā)ength=”+ss.length());System.out.println("capacity="+ss.capacity());}}運行結(jié)果:

buffer=abclength=3capacity=19從運行結(jié)果我們可以看到為附加處理保留了空間。注意:capacity()與length()的區(qū)別。舉例publicclassStringBuf{ publicstaticvoidmain(String[]args){ StringBufferbuf=newStringBuffer("Java");

buf.append(“GuideVer1/”); buf.append(3); intindex=5;

buf.insert(index,"Student");

index=23;

buf.setCharAt(index,'.');

intstart=24; intend=25;

buf.replace(start,end,“6");

Strings=buf.toString();//轉(zhuǎn)換為字符串 System.out.println(s); }}JavaStudentGuideVer1.6classStringOp{publicstaticvoidmain(Stringargs[]){ Strings1="1234567"; StringBuffers2=newStringBuffer("abc");

System.out.println(s1.substring(5)); System.out.println(s1.concat(s2.toString()));

if(pareTo(s2.toString())==0) System.out.println("s1與s2相等"); else System.out.println("s1與s2不相等"); inti=s1.length(); s2=newStringBuffer(i);

for(intj=i-1;j>=0;j--){ s2.append(s1.charAt(j)); } System.out.println(Integer.parseInt(s1)); System.out.println("字符串s2:"+s2); }}1.C和C++的字符串只是簡單的以\0結(jié)尾的字符數(shù)組,而Java中,字符串是一個封裝的對象,這種處理對于編程者提供了許多有利之處。2.C和C++中可以通過指針直接對字符串所在的內(nèi)存地址進行操作,并且不對越界情況進行檢查,Java中只能通過類String或StringBuffer所提供的方法對字符串進行操作,并且要對越界情況進行檢查并報告,這樣大大增加了安全性。Java與C和C++處理字符串的差別編程練習(xí)輸入的一個字符串中包含了一個人的姓名、性別和年齡。中間用空格隔開。要求從該字符串中提取出姓名、性別和年齡并賦給相應(yīng)的變量。表示年齡的變量是整型的。搜索字符串S中是否包含s1,如果包含,則替換為s2。注意s1和s2的長度不一定相等。數(shù)組數(shù)組是一種最簡單的復(fù)合數(shù)據(jù)類型,是一組同類型有序數(shù)據(jù)的集合。數(shù)組分為一維數(shù)組和多維數(shù)組。數(shù)組的元素既可以是簡單類型,也可以是引用類型。Java中創(chuàng)建數(shù)組的步驟聲明數(shù)組創(chuàng)建數(shù)組空間聲明一維數(shù)組的兩種形式

數(shù)組元素類型數(shù)組名[];數(shù)組元素類型[]數(shù)組名;一維數(shù)組創(chuàng)建數(shù)組空間

數(shù)組名=new數(shù)組元素類型[元素個數(shù)];

可以為基本類型或復(fù)合類型不能指出數(shù)組中元素的個數(shù)inta[];float[]f1,f2;a=newint[3]f1=newfloat[10];f2=newfloat[20];簡單類型數(shù)組分配內(nèi)存示意圖0xb1ca

a[0]a[1]a[2]inta[];int[]a;

定義一個int類型的數(shù)組變量,給變量a分配1個存儲空間,初始化為null。anulla=newint[3];

申請3個int類型的存儲空間,并將首地址賦給變量a0xb1cainta[];inta=newint[3]float[]f1,f2;f1=newfloat[10];f2=newfloat[20];inta[]=newint[3]float[]f1=newfloat[10];float[]f2=newfloat[20];一維數(shù)組聲明數(shù)組和創(chuàng)建數(shù)組空間可組合在一起,

用一條語句完成。整型:0實型:0.0f或0.0d字符:‘\0’引用類型:null數(shù)組創(chuàng)建后,系統(tǒng)自動為數(shù)組元素賦初值。所以數(shù)組的創(chuàng)建也稱為動態(tài)初始化。數(shù)組元素的默認(rèn)初值創(chuàng)建可變長數(shù)組intsize;size=System.in.read();int[]number=newint[size];float[]f=newfloat[10];for(inti=0;i<f.length;i++){f[i]=i+10;}f=newfloat[20];根據(jù)輸入的數(shù)據(jù)來定義數(shù)組長度在程序中隨時修改數(shù)組長度重新定義后數(shù)組元素初始化為0數(shù)組元素的引用數(shù)組元素的引用格式

<數(shù)組名>[<下標(biāo)表達(dá)式>]數(shù)組元素下標(biāo)由0開始。

最大的下標(biāo)比數(shù)組長度小1。例:inta[]=newint[5]數(shù)組a包含了5個數(shù)組元素,分別是:

a[0],a[1],a[2],a[3],a[4]a[0]a[1]a[2]a[3]a[4]a一維數(shù)組靜態(tài)初始化與聲明類型一致的初始值intintArray[]={1,2,3,4,5};doubledecArray[]={1.1,2.2,3.3};StringstrArray[]={"Java","BASIC","FORTRAN"};類型數(shù)組名[]={元素1[,元素2…]}不能定義大小邊界檢查

Java對數(shù)組元素進行越界檢查。對于每個數(shù)組都有一個屬性length指明

自身的長度,如:

f1.length指明數(shù)組f1的長度。例:為數(shù)組元素賦值并逆序輸出

publicclassArrayTest{publicstaticvoidmain(Stringargs[]){inti;inta[]=newint[5];for(i=0;i<a.length;i++){a[i]=i;}for(i=a.length-1;i>=0;i--){System.out.println("a["+i+"]="+a[i]);}}}

運行結(jié)果為:a[4]=4a[3]=3a[2]=2a[1]=1a[0]=0for-each格式的循環(huán)語句for(Typevalue:array){expressionvalue;}for(inti=0;i<a.length;i++){System.out.println(a[i]);}for(intx:a){System.out.println(x);}作用:順次遍歷數(shù)組中的元素,并將元素的值賦給臨時變量。缺點:只能順次遍歷所有元素,無法實現(xiàn)較為復(fù)雜的循環(huán)只能讀取數(shù)組元素的值,賦給臨時變量,不能給數(shù)組元素賦值。數(shù)組名staticdoubleaverage(doublescore[]){inti;doublesum=0,ave;for(i=0;i<score.length;i++)sum+=score[i];ave=sum/score.length;return(ave);}實現(xiàn)sort方法總體實現(xiàn)

期末考試結(jié)束,編寫方法average求出某班級前10名同學(xué)Java課程的平均分,并編寫方法sort將前10同學(xué)的成績按由高到底進行排序。實現(xiàn)average方法staticvoidsort(doublescore[]){inti,j;doubletemp;for(i=0;i<score.length;i++)for(j=i+1;j<score.length;j++)if(score[i]>score[j]){temp=score[i];score[i]=score[j];score[j]=temp;}}publicclassScore{publicstaticvoidmain(String

args[]){ doublea[]={78,89,57,87,98,65,43,79,69,86}; doubleaver=average(a);

System.out.println(aver);

sort(a);

for(intk=0;k<10;k++)

System.out.print(a[k]+"");}}1.創(chuàng)建數(shù)組

typearrayName[]=newtype[arraySize];2.創(chuàng)建每一個數(shù)組元素

arrayName[0]=newtype(paramList);arrayName[1]=newtype(paramList);…

arrayName[arraySize-1]=newtype(paramList);對象數(shù)組的創(chuàng)建StringstringArray[];//定義一個String類型的數(shù)組變量stringArray=newString[3];//給數(shù)組變量StringArray分配3個連續(xù)的存儲空間,初始化每個引用值為nullstringArray[0]=newString(“how”);stringArray[1]=newString(“are”);stringArray[2]=newString(“you”);初始化數(shù)組元素對象數(shù)組內(nèi)存分配示意圖stringArrayoxa2b6how0xb1caare0xd3cayou0xa5c7oxa2b60xb1ca0xd3ca0xa5c7StringstringArray[];

stringArray=newString[3];stringArray[0]=newString(“how”);stringArray[1]=newString(“are”);stringArray[2]=newString(“you”);nullnullnullnulloxa2b6將學(xué)生姓名存儲在字符數(shù)組中,當(dāng)輸入一個姓名時,進行查找,并給出結(jié)果。publicclassSearch{

publicstaticvoidmain(String[]args){inti; String[]stuName=newString[5]; Scannersc=newScanner(System.in); for(i=0;i<stuName.length;i++)

stuName[i]=sc.next(); System.out.println("輸入要查的學(xué)生:"); Stringxm=newString(); xm=sc.next(); for(i=0;i<stuName.length;i++) if(xm.equals(stuName[i]))

{System.out.println("找到了!");break;} if(i>=stuName.length)System.out.println("沒找到");

}}多維數(shù)組在Java語言中,由于把二維數(shù)組看作是數(shù)組的數(shù)組,數(shù)組空間不一定連續(xù)分配。二維數(shù)組每一行的大小可以不同。規(guī)則數(shù)組:各行的列數(shù)相同。不規(guī)則數(shù)組:各行的列數(shù)不同。二維數(shù)組的聲明聲明二維數(shù)組的一般形式為:

類型數(shù)組名[][];或類型[][]數(shù)組名;或類型[]數(shù)組名[];如:int a[][];int[][] a; int[] a[];分配存儲空間為二維數(shù)組分配空間有兩種方法:使用new運算符(動態(tài)初始化)

靜態(tài)初始化1.規(guī)則數(shù)組創(chuàng)建typearrayName[][]=newtype[length1][length2]inta[][]=newint[3][4];二維數(shù)組的動態(tài)初始化2.不規(guī)則數(shù)組的創(chuàng)建111121inta[][]=newint[3][]a[0]=newint[1]a[1]=newint[2]a[2]=newint[3]000000000000適用于不規(guī)則的二維數(shù)組簡單二維數(shù)組內(nèi)存分配示意圖float[][]x;xnullx=newfloat[3][];x0xab12nullnullnullx[0]=newint[2];x[1]=newint[3];x[2]=newint[4];x0xab12x[0]x[1]x[2]x[0]x[1]x[2]例如:Strings[][]=newString[2][];s[0]=newString[2];s[1]=newString[3];s[0][0]=newString(“Good”);s[0][1]=newString(“Luck”);s[1][0]=newString(“to”);s[1][1]=newString(“you”);s[1][2]=newString(“!”);二維對象數(shù)組的創(chuàng)建二維數(shù)組的靜態(tài)初始化靜態(tài)初始化是在聲明數(shù)組的同時就為數(shù)組元素指定初值。例如:intintArray[][]={{1,2},{3,4},{5,6,7}};不必指出數(shù)組每一維的大小,系統(tǒng)會根據(jù)初始化時給出的初始值的個數(shù)自動算出數(shù)組每一維的大小。適用于規(guī)則數(shù)組和不規(guī)則數(shù)組。intArray[0],intArray[1]長度為2;intArray[2]長度為3。對二維數(shù)組中每個元素,引用方式為:

arrayName[index1][index2]

其中index1和index2是數(shù)組下標(biāo),為整型常數(shù)和整型表達(dá)式,都是從0開始的。二維數(shù)組元素的引用publicclassYanghui{publicstaticvoidmain(Stringargs[]){finalintMAX=10;intmat[][]=newint[MAX][];inti=0,j,n=MAX;

for(i=0;i<n;i++){mat[i]=newint[i+1];mat[i][0]=1;mat[i][i]=1;for(j=1;j<i;j++)mat[i][j]=mat[i-1][j-1]+mat[i-1][j];}

for(i=0;i<n;i++){for(j=0;j<n-i;j++)System.out.print("");for(j=0;j<=i;j++)System.out.print(""+mat[i][j]);System.out.println();}}}例:輸出楊輝三角寫出運行結(jié)果classShuzu{ publicstaticvoidmain(String[]arg){ inta[][]=newint[3][];inti,j; a[0]=newint[2]; a[1]=newint[3]; a[2]=newint[4]; for(i=0;i<a.length;i++) {for(j=0;j<a[i].length;j++) {a[i][j]=i+j;System.out.print(a[i][j]+””);}System.out.println();} }}011232345二維矩陣轉(zhuǎn)置publicclassMatrixt{publicstaticvoidmain(Stringargs[]){inta[][]=

{{1,2,3,4},{2,3,4,5},{3,4,5,6}};intb[][]=newint[4][3];inti,j;for(i=0;i<3;i++)

for(j=0;j<4;j++)b[j][i]=a[i][j];

for(i=0;i<4;i++){for(j=0;j<3;j++)System.out.print(s+"");

System.out.println();}}}程序運行結(jié)果:123234345456數(shù)組操作的常用方法publicstaticvoidarraycopy(Objectsrc,intsrc_position,Objectdst,intdst_position,intlength)類System的靜態(tài)方法arraycopy(),可用來進行數(shù)組復(fù)制。其格式和功能如下:自學(xué)數(shù)組操作的常用方法arraycopy()方法【案例】用方法arraycopy()復(fù)制數(shù)組。classArrayCopy{publicstaticvoidmain(Stringargs[]){intarray1[]={1,2,3,4,5,6,7,8,9,10};intarray2[]={0,0,0,0,0,0,0,0,0,0};

System.arraycopy(array1,0,array2,2,5);System.out.print("array2:");for(ints:array2)System.out.print(s+"");System.out.println();}}程序運行結(jié)果如下:array2:0012345000類Arrays中的方法java.util.Arrays類中提供了對數(shù)組排序sort()、二分查找binarySearch()等靜態(tài)方法。sort()方法【案例】使用sort()方法對一整型數(shù)組遞增排序importjava.util.*;publicclassArraySort{publicstaticvoidmain(Stringargs[]){inta[]={8,6,7,3,5,4},i;Arrays.sort(a);for(ints:a)System.out.print(""+s);System.out.println();}}程序運行結(jié)果為:345678使用數(shù)組來存儲不同類型數(shù)據(jù)publicclassbbb{publicstaticvoidmain(String[]args){Objecta[]=newObject[5];a[0]=5;a[1]='a';a[2]=3.456;a[3]="abcde";a[4]=(Integer)a[0]+3;for(Objectx:a)System.out.println(x);}}8.7向量向量(Vector)是java.util類包提供的一個工具類。它是允許不同類型元素共存的變長數(shù)組。每個Vector類的對象可以表達(dá)一個完整的數(shù)據(jù)序列。Vector可以追加對象元素數(shù)量,可以方便的修改和維護序列中的對象。向量的適用情況需要將不同類的對象組合成一個數(shù)據(jù)序列。序列中的元素個數(shù)不確定。序列中的元素都是對象或可以表示為對象。需要做頻繁的查詢、插入或刪除等操作。在不同的類之間傳遞大量的數(shù)據(jù)。

Vector類有三個構(gòu)造方法:Vector():構(gòu)造一個長度為10的空向量。Vector(intcapacity)

以指定的存儲容量構(gòu)造一個空向量。Vector(intcapacity,int

capacityIncrement)

以指定的存儲容量和容量增量構(gòu)造一個空向量。創(chuàng)建向量

VectorMyVector=newVector(100,50);

創(chuàng)建的MyVector向量序列初始有100個元素的空間,以后一旦使用殆盡則以50為單位遞增,使序列中元素的個數(shù)變化成150,200,…。在創(chuàng)建Vector序列時,不需要指明序列中元素的類型,可以在使用時確定。創(chuàng)建向量addElement(Objectobj)將新元素添加到序列尾部。insertElementAt(Object

obj,intindex)將新元素插入到指定位置。向向量序列中添加元素插入位置VectorMyVector=newVector();for(inti=1;i<=10;i++){MyVector.addElement(newInteger(i));}MyVector.insertElementAt("middle",5);添加元素實例—基本數(shù)據(jù)類的包裝importjava.util.*;classAa{publicstaticvoidmain(String[]arg){VectorMyVector=newVector();

for(inti=1;i<=10;i++)MyVector.addElement(newInteger(i));MyVector.insertElementAt("middle",5);

for(inti=0;i<=10;i++)System.out.println(MyVector.elementAt(i));}}添加元素實例運行結(jié)果:12345middle678910setElementAt(Object

obj,intindex)

將index位置處的對象元素設(shè)置為obj,如果這個位置原來有元素,則被覆蓋。removeElement(Object

obj)

刪除與指定的obj對象相同的第一個元素,同時將后面的元素前提,補上空位。返回值是布爾值。removeElementAt(intindex)

刪除index指定位置處的元素,將后面的元素前提。removeAllElements():清除序列中的所有元素。元素的修改或刪除VectorMyVector=newVector(100);for(inti=0;i<10;i++){

MyVector.addElement(“welcome”);MyVector.addElement(“to”);MyVector.addElement(“beijing”);}while(MyVector.removeElement(“to”));向量實例—添加刪除元素1.ObjectelementAt(intindex)

返回指定位置處的元素。一個要注意的問題:由于返回的是Object類型的對象,在使用之前通常需要進行強制類型轉(zhuǎn)換,將返回的對象引用轉(zhuǎn)換成Object類的某個具體子類的對象。例如:

Stringstr=(String)MyVector.elementAt(0);2.booleancontains(Objectobj)

檢查向量序列中是否包含指定的對象元素obj。查找向量序列中的元素3.intindexOf(Objectobj,intstart_index)

從指定的start_index位置開始向后搜索,返回所找到的第一個與指定對象obj相同的元素的下標(biāo)位置。若指定的對象不存在,則返回-1。4.intlastIndexOf(Objectobj,intstart_index)

從指定的start_index位置開始向前搜索,返回所找到的第一個與指定對象obj相同的元素的下標(biāo)位置。若指定的對象不存在,則返回-1。inti=0;While((i=MyVector.indexOf(“welcome”,i))!=-1){System.out.println(i);i++;}查找向量序列中的元素size():返回Vector中元素的數(shù)量capacity():返回Vector的容量clone():建立Vector的備份copyInto(Object[]):把Vector中的元素拷貝到一個數(shù)組中firstElement():返回第一個元素lastElement():返回最后一個元素isEmpty():判斷是否為空setSize(intsize):設(shè)置Vector的大小trimToSize():將Vector的容量下調(diào)至最小值Vector中的其他方法

使用Vector時,一個需要特別注意的問題就是要先創(chuàng)建后使用。如果不先使用new運算符利用構(gòu)造函數(shù)創(chuàng)建Vector類的對象,而直接使用Vector的方法,如:addElement()等方法,則可能造成堆棧溢出或使用null指針等異常,妨礙程序的正常運行。使用向量應(yīng)注意:例題:用向量實現(xiàn),創(chuàng)建3個學(xué)生對象(學(xué)號、姓名、年齡)和4個教師對象(教工號、姓名、系別),并且輸出。創(chuàng)建向量的對象importjava.util.*;classStu{Stringxh,xm; intnl;

pub

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論