JAVA教程-字符和字符串_第1頁
JAVA教程-字符和字符串_第2頁
JAVA教程-字符和字符串_第3頁
JAVA教程-字符和字符串_第4頁
JAVA教程-字符和字符串_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

字符和字符串Java平臺三個用于處理字符數(shù)據(jù)的類:Character此類的實(shí)例可以包含單個字符值。還定義了一些可以用于操作和檢查字符數(shù)據(jù)的簡便方法String此類用于處理由多個字符組成的不可改變的數(shù)據(jù)。StringBuffer此類用于存儲和操作由多個字符組成的可改變的數(shù)據(jù)。一.字符Character類型的對象是單個字符Character類型對象的創(chuàng)立:例:Charactera=newCharacter(‘a(chǎn)’);注:a為Character類型的對象名,指向存放字符‘a(chǎn)’的引用當(dāng)需要使用對象時,可用Character對象代替原始的Char類型的變量例:將一個字符值傳遞給會改變此值的方法,或在將字符值放進(jìn)一個需要對象的數(shù)據(jù)結(jié)構(gòu)〔比方向量〕例如程序CharacterDemo:

publicclassCharacterDemo{

publicstaticvoidmain(Stringargs[]){

Charactera=newCharacter(‘a(chǎn)’);

Charactera2=newCharacter(‘a(chǎn)’);

Characterb=newCharacter(‘b’);

intdifference=apareTo(b);

if(difference==0){

System.out.println(“aisequaltob.”);

}elseif(difference<0){

System.out.println(“aislessthanb.”);

}elseif(difference>0){

System.out.println(“aisgreaterthanb.”);

}

System.out.println(“ais”+((a.equals(a2))?“equal”:“notequal”)

+“toa2.”);

System.out.println(“Thecharacter”+a.toString()+“is”

+(Character.isUpperCase(a.charValue())?“upper”:“l(fā)ower”)

+“case.”);

}

}

這個程序的輸出:

aislessthanb.

aisequaltoa2.

Thecharacteraislowercase.Character類提供的構(gòu)造器Character〔char〕Character類唯一的構(gòu)造器,Character對象一旦創(chuàng)立,它包含的值就不能改變Character類中的類方法compareTO(Character)比較兩個字符對象包含的值,返回一個整數(shù)值

intdifference=apareTo(b)a為此方法所在的對象b為此方法的參數(shù)

equals(object)比較當(dāng)前對象包含的值與參數(shù)對象包含的值,如果兩個對象包含的值相等,返回ture例:a.equals(a2)toString()

將此對象轉(zhuǎn)換為字符串,產(chǎn)生的字符串的長度為一個字符,它包含此字符對象包含的值例:Charactera=newCharacter(‘a(chǎn)’);System.out.println(a.toString());

輸出結(jié)果為acharValue()

此方法以原始char值的形式返回此字符對象包含的值

booleanisUpperCase(char)

此方法判斷一個原始char值是否是大寫字母

例:判斷程序中語句的返回值

Character.isUpperCase(a.charValue())

輸出為:false

booleanisLowerCase(char)

判斷指定的原始char值是否為小寫chartoUpperCase(char)chartoLowerCase(char)

返回指定的原始char值大寫或小寫形式booleanisLettter(char)booleanisDigit(char)booleanisLetterOrDigit(char)

分別判斷指定的原始char值是否是字母,數(shù)字,或者屬于字母或數(shù)字booleanisWhiteSpace(char)根據(jù)java平臺判斷指定的原始char值booleanisSpaceChar(char)根據(jù)Unicode標(biāo)準(zhǔn)判斷指定的原始char值是否是空字節(jié)booleanisJavaIdentifierStart(char)booleanisJavaIdentifierPart(char)分別判斷指定的原始char值是否可以是合法標(biāo)識符的第一個字符,或者合法標(biāo)識符的一局部char與Character的區(qū)別:★char為字符型數(shù)據(jù),聲明變量形式為

charm;

表示m為字符型變量,存放一個字符,變量m即代表該字符常量★Character為引用型數(shù)據(jù)中的類。定義變量后,變量名指向的是所賦值的引用,即地址,而不是值的本身。二、字符串和字符串緩沖區(qū)〔一〕兩個類String和StringBuffer字符串:有多個字符組成的字符數(shù)據(jù)兩個類的差異:String用于其值不能改變的字符串StringBuffer用于將被修改的字符串字符串緩沖區(qū)通常用于動態(tài)地構(gòu)造字符數(shù)據(jù)注:字符串是常量,比使用字符串緩沖區(qū)更高效,且字符串可共享,所以只要可能就使用字符串。例如程序StringDemo:

publicclassStringsDemo{

publicstaticvoidmain(String[]args){

Stringpalindrome=“DotsawIwasTod”;

intlen=palindrome.length();

StringBufferdest=newStringBuffer(len);

for(inti=(len-1);i>=0;i--){

dest.append(palindrome.charAt(i))

}//append方法將參數(shù)指定的字符添加到dest中System.out.println(dest.toString());

}

}

輸出:

doTsawIwastoDString和StringBuffer類的功能:

1、創(chuàng)立字符串和字符串緩沖區(qū)

2、使用訪問器方法得到關(guān)于字符串和字符串緩沖區(qū)的信息

3、修改字符串緩沖區(qū)

〔二〕創(chuàng)立字符串和字符串緩沖區(qū)字符串:(1)字符串直接值〔雙引號〕Stringpalindrome=“DotsawIwasTod”;(2)使用new關(guān)鍵字和構(gòu)造器允許使用不同的數(shù)據(jù)源提供字符串的初始值如:字符數(shù)組、字節(jié)數(shù)組或字符串緩沖區(qū)String類的構(gòu)造器:String()——創(chuàng)立一個空字符串String(byte[])String(byte[],int,int)String(byte[],int,int,String)String(byte[],String)——創(chuàng)立一個字符串,值由一個字節(jié)數(shù)組的內(nèi)容設(shè)置。兩個整數(shù)參數(shù)分別設(shè)置用作初始值的子數(shù)組的偏移量和長度,String參數(shù)指定將字節(jié)轉(zhuǎn)換為字符所用的字符編碼String(char[])String(char[],int,int)——字符串的值由一個字符數(shù)組的內(nèi)容設(shè)置。兩個整數(shù)參數(shù)分別設(shè)置用作初始值的子數(shù)組的偏移量和長度

String(String)——字符串的值由另一個字符串設(shè)置。它創(chuàng)立兩個相同的字符串,不建議使用String(StringBuffer)——字符串的值由一個字符串緩沖區(qū)設(shè)置例:從一個字符數(shù)組創(chuàng)立字符串char[]helloArray={‘h’,’e’,’l’,’l’,’o’};helloString=newString(helloArray);System.out.println(helloString);此代碼片斷的最后一行顯示:hello字符串緩沖區(qū):必須使用new操作符和構(gòu)造器三個構(gòu)造器:StringBuffer——創(chuàng)立一個空的字符串緩沖區(qū),初始容量是16個字符StringBuffer(int)——創(chuàng)立一個空的字符串緩沖區(qū),它具有指定的初始容量StringBuffer(String)——創(chuàng)立一個字符串緩沖區(qū),值由指定的String初始化。容量是原始字符串的長度加16例如:StringsDemo程序中:Stringpalindrome=“DotsawIwasTod”;

intlen=palindrome.length();

StringBufferdest=newStringBuffer(len);

上例創(chuàng)立了一個由dest引用的字符串緩沖區(qū),初始容量等于由palindrome引用的字符串的長度,〔三〕得到字符串或字符串緩沖區(qū)的長度訪問器方法:用于獲取關(guān)于對象的信息的方法〔1〕length方法——返回字符串或字符串緩沖區(qū)中包含的字符數(shù)〔2〕capacity方法〔僅用于StringBuffer類〕——返回分配給此字符串緩沖區(qū)的空間量,而不是被使用的空間量例如1:Stringpalindrome=“DotsawIwasTod”;

intlen=palindrome.length();

代碼執(zhí)行后,len等于17

例如2:StringsDemo程序中由dest引用的字符串緩沖區(qū)的長度在循環(huán)的每次迭代中加1,但它的容量保持不變012345678910111213141516

Length()=9capacity()=17*字符串緩沖區(qū)的長度是它包含的字符數(shù),容量是已分配給它的字符空間量*String類沒有capacity方法,因?yàn)樽址荒鼙桓淖?/p>

DotsawI↑↑〔四〕通過索引從字符串或字符串緩沖區(qū)得到字符使用chatAt訪問器方法

第一個字符的索引為0,最后一個字符的索引為length()-1StringanotherPalindrome=“Niagara.Oroaragain!”;CharaChar=anotherPalindrome.chatAt(9);

索引從0開始,所以索引9位置上的字符是“O”cch

0123456789101112131415161718192021charAt(0)charAt(9)charAt(length()-1)Niagara.Oroaragain!要從字符串或字符串緩沖區(qū)中得到多個字符,可以使用substring方法substring方法:Stringsubstring(int)Stringsubstring(int,int)——返回一個子字符串第一個整數(shù)參數(shù)指定第一個字符的索引,第二個整數(shù)參數(shù)是最后一個字符的索引減1.假設(shè)無第二個參數(shù),子字符串?dāng)U展到原始字符串的末尾例如:StringanotherPalindrome=“Niagara.Oroaragain!”;Stringroar=anotherPalindrome.substring(11,15);roar〔五〕在字符串中搜索字符或子字符串訪問器方法:indexOf和lastIndexOf——返回搜索的字符或子字符串在字符串中的位置*indexOf方法從字符串的開頭向前搜索*lastIndexOf方法從字符串的末尾向后搜索String類中的indexOf和lastIndexOf方法intindexOf(int)intlastIndexOf(int)——返回指定的字符第一次〔最后一次〕出現(xiàn)的位置的索引intindexOf(int,int)intlastIndexOf(int,int)——從指定的索引開始向前〔向后〕搜索,返回指定的字符第一次〔最后一次〕出現(xiàn)的位置的索引intindexOf(String)intlastIndexOf(String)——返回指定的字符串第一次〔最后一次〕出現(xiàn)的位置的索引intindeOf(String,int)intlastIndexOf(String,int)——從指定的索引開始向前〔向后〕搜索,返回指定的字符串第一次〔最后一次〕出現(xiàn)的位置的索引***StringBuffer類不支持indexOf和lastIndexOf方法,假設(shè)要使用這些方法,先使用toString方法將字符串緩沖區(qū)轉(zhuǎn)換為字符串//Thisclassassumesthatthestringusedtoinitialize//fullPathhasadirectorypath,filename,andextension.//Themethodswon'tworkifitdoesn't.publicclassFilename{privateStringfullPathprivatecharpathSeparator,extensionSeparator;publicFilename(Stringstr,charsep,charext){fullPath=str;pathSeparator=sep;extensionSeparator=ext;}publicStringextension(){intdot=fullPath.lastIndexOf(extensionSeparator);returnfullPath.substring(dot+1);}publicStringfilename(){intdot=fullPath.lastIndexOf(extensionSeparator);intsep=fullPath.lastIndexOf(pathSeparator);returnfullPath.substring(sep+1,dot);}publicStringpath(){intsep=fullPath.lastIndexOf(pathSeparator);returnfullPath.substring(0,sep);}}

publicclassFilenameDemo{publicstaticvoidmain(String[]args){FilenamemyHomePage=newFilename("/home/mem/index.html",'/','.');System.out.println("Extension="+myHomePage.extension());System.out.println("Filename="+myHomePage.filename());System.out.println("Path="+myHomePage.path());}}輸出:Extension=htmlFilename=indexPath=/home/mem〔六〕、比較字符串和局部字符串String類中用于比較字符串和局部字符串的方法:booleanendsWith(String)booleanstartsWith(String)booleanstartsWith(String,int)——如果該字符串是以方法參數(shù)指定的子字符串開頭或結(jié)尾的,返回true;int表示在原始字符串中開始查看的偏移量intcompareTo(String)intcompareTo(Object)intcompareToIgnoreCase(String)——比較兩個字符串,返回整型數(shù)據(jù)比較前Object參數(shù)被轉(zhuǎn)換為字符串compareToIgnoreCase方法忽略大小寫booleanequals(Object)booleanequslsIgnoreCase(String)——如果字符串包含與參數(shù)一樣的字符序列,返回truebooleanregionMatches(int,String,int,int)booleanregionMatches(boolean,int,String,int,int)——檢查字符串指定局部是否匹配String參數(shù)的指定局部例如:publicclassRegionMatchesDemo{publicstaticvoidmain(String[]args){StringsearchMe="GreenEggsandHam";StringfindMe=“Eggs”;//searchMe與findMe為String類引用intlen=findMe.length();//length()方法booleanfoundIt=false;inti=0;while(!searchMe.regionMatches(i,findMe,0,len)){i++;foundIt=true;}//foundIt的作用???if(foundIt){System.out.println(searchMe.substring(i,i+len));}}}輸出:Eggs〔七〕操作字符串String類中用于操作字符串的方法:這些方法創(chuàng)立并包含結(jié)果的第二個字符串Stringconcat(String)——將String參數(shù)連接到這個字符串的末尾Stringreplace(char,char)——將第一個參數(shù)指定的字符替換為第二個參數(shù)指定的字符Stringtrim()——刪除這個字符串兩端的空格StringtoLowerCase()StringtoUpperCase()——分別將這個字符串轉(zhuǎn)換為小寫或大寫例如://Thisexampledemonstratestheuseofthereplacemethod//intheStringclass.publicclassBostonAccentDemo{privatestaticvoidbostonAccent(Stringsentence){charr='r';charh='h';StringtranslatedSentence=sentence.replace(r,h);//replace方法,用h替換rSystem.out.println(translatedSentence);}publicstaticvoidmain(String[]args){//main方法,入口StringtranslateThis=“PakrthecarinHarvardyard.”;//translatThis為String類引用bostonAccent(translateThis);//調(diào)用方法bostonAccent,傳遞參數(shù)}}輸出為:PahkthecahinHahvahdyahd.〔八〕修改字符串緩沖區(qū)StringBuffer類提供的用于修改字符串緩沖區(qū)的方法:StringBufferappend(boolean)StringBufferappend(char)StringBufferappend(char[])StringBufferappend(char[],int,int)StringBufferappend(double)將參數(shù)附加到這個字符串緩沖區(qū)。StringBufferappend(float)在進(jìn)行附加操作前,數(shù)據(jù)被轉(zhuǎn)換為字符串StringBufferappend(int)StringBufferappend(long)StringBufferappend(Object)StringBufferappend(String)StringBufferdelete(int,int)

StringBufferdeleteCharAt(int)——刪除字符串緩沖區(qū)中的指定字符

StringBufferinsert(int,boolean)

StringBufferinsert(int,char)

StringBufferinsert(int,char[])

StringBufferinsert(int,char[],int,int)

StringBufferinsert(int,double)

StringBufferinsert(int,float)

StringBufferinsert(int,int)

StringBufferinsert(int,long)

StringBufferinsert(int,Object)

StringBufferinsert(int,String)——將第二個參數(shù)插入字符串緩沖區(qū)

第一個整數(shù)參數(shù)指定一個索引,數(shù)據(jù)

被插入到此索引之前。

StringBufferreplace(int,int,String)

voidsetCharAt(int,char)——替換這個字符串緩沖區(qū)中的指定字符

StringBufferreverse()

——反轉(zhuǎn)這個字符串緩沖區(qū)中字符的次序例如:publicclassInsertDemo{publicstaticvoidmain(String[]args){StringBufferpalindrome=newStringBuffer(“Aman,aplan,acanal;Panama.”);//palindrome為StringBuffer類引用palindrome.insert(15,“acat,”);//將acat插入到索引為15的字符之前System.out.println(palindrome);}}輸出為:一句對稱的回文Aman,aplan,acat,acanal;Panama.注:將數(shù)據(jù)插入到字符串緩沖區(qū)的開始處,應(yīng)該使用索引0將數(shù)據(jù)添加到字符串緩沖區(qū)的末尾,應(yīng)使用等于字符串緩沖區(qū)當(dāng)前長度的索引或用append方法〔九〕字符串和編譯器看不懂?。?!三、字符和字符串小結(jié)★Character對象用于包含單個字符值★String對象用于包含不改變的一系列字符★StringBuffer對象用于動態(tài)地構(gòu)造或修改一系列字符程序Palindrome:

publicclassPalindrome{publicstaticb

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論