第9章字符串和文本_第1頁(yè)
第9章字符串和文本_第2頁(yè)
第9章字符串和文本_第3頁(yè)
第9章字符串和文本_第4頁(yè)
第9章字符串和文本_第5頁(yè)
已閱讀5頁(yè),還剩39頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第9章字符串21.構(gòu)造一個(gè)字符串ΔStringnewString=newString(stringLiteral);

Stringmessage=newString("WelcometoJava");因?yàn)樽址氖褂煤茴l繁,所以Java提供了構(gòu)造字符串的快捷初始化寫法。Stringmessage="WelcometoJava";32.不可變字符串ΔString對(duì)象的內(nèi)容不能改變。下面的代碼能改變字符串的內(nèi)容嗎?

Strings="Java";s="HTML";4代碼追蹤

Strings="Java";s="HTML";5代碼追蹤

Strings="Java";s="HTML";63.1字符串的比較Δequals方法 Strings1=newString("Welcome“); Strings2="welcome";

if(s1.equals(s2)){//s1ands2havethesamecontents

}

if(s1==s2){//s1ands2havethesamereference

}總結(jié):對(duì)String而言,==用來比較引用是否相等,equals用來比較內(nèi)容是否相等。73.2字符串的比較compareTo(Objectobject)方法 Strings1=newString("Welcome“); Strings2="welcome";

if(pareTo(s2)>0){//s1大于s2}elseif(pareTo(s2)==0){//s1等于s2}else//s1小于s284.1求字符串的長(zhǎng)度Δ用length()

方法求字符串的長(zhǎng)度:message="Welcome";message.length()區(qū)別:求數(shù)組的長(zhǎng)度是用:數(shù)組名.length94.2在字符串中提取單個(gè)字符不要使用message[0]提取字符使用message.charAt(index)編號(hào)從0開始104.3字符串的連接Strings3=s1.concat(s2);Strings3=s1+s2;s1+s2+s3+s4+s5sameas(((s1.concat(s2)).concat(s3)).concat(s4)).concat(s5);115.1獲取子串String是一個(gè)永久類;字符串創(chuàng)建以后,它的值就不能修改Strings1="WelcometoJava";Strings2=s1.substring(0,11)+"HTML";126.1字符串的轉(zhuǎn)換一個(gè)字符串一旦創(chuàng)建,它的內(nèi)容就不能再改變.但是可以使用下面的方法將一個(gè)字符串轉(zhuǎn)換為新的字符串:

toLowerCase"Welcome".toLowerCase()

返回新字符串welcometoUpperCase"Welcome".toUpperCase()

返回新字符串WELCOME 136.2字符串的替換trimreplace(oldChar,newChar)"Welcome".replace('e','A')

返回新字符串WAlcomA"Welcome".replaceFirst("e","AB")

返回新字符串WABlcome146.3字符串的分隔split(delimiter)String[]tokens="Java#HTML#Perl".split("#");for(inti=0;i<tokens.length;i++)System.out.print(tokens[i]+"");顯示:JavaTHMLPerl157.字符串匹配Δbooleanmatches(Stringregex)該方法判斷字符串是否與已知正則表達(dá)式匹配.

Stringstr=newString("aaab");System.out.println(str.matches("a*b"));Page246168.獲取字符串中的一個(gè)字符或者子串“WelcometoJava”.indexOf(‘W’)返回0."WelcometoJava".indexOf('x')返回-1."WelcometoJava".indexOf('o',5)返回9."WelcometoJava".indexOf("come")返回3."WelcometoJava".indexOf("Java",5)返回11."WelcometoJava".indexOf("java",5)返回-1."WelcometoJava".lastIndexOf('a')返回14.

179.將字符值和數(shù)值轉(zhuǎn)換為字符串String類提供了幾個(gè)valueOf靜態(tài)方法,可以將字符,字符數(shù)組,數(shù)值型數(shù)據(jù)轉(zhuǎn)換為字符串。這些方法名稱都是valueOf

,參數(shù)分別為char,char[],double,long,int,和float.例如,將一個(gè)double型的數(shù)值轉(zhuǎn)換為字符串

String.valueOf(5.44).返回值是“5.44”這種形式的字符串。18Character

類19例CharactercharObject=newCharacter('b');charOpareTo(newCharacter('a'))returns1charOpareTo(newCharacter('b'))returns0charOpareTo(newCharacter('c'))returns-1charOpareTo(newCharacter('d')returns–2charObject.equals(newCharacter('b'))returnstruecharObject.equals(newCharacter('d'))returnsfalse20StringBuilder/StringBuffer類ΔStringBuilder/StringBuffer

類可以代替String

類處理字符串的一種方法。一般來說,不管在哪里使用字符串,都要用到字符串緩沖區(qū)。

StringBuilder/StringBuffer

類比String類更靈活.可以在字符串緩沖區(qū)中添加,插入或追加新的內(nèi)容。然而,字符串一旦創(chuàng)建后,它的值就不能被修改。Page252StringBuilder/StringBuffer類如果是多任務(wù)并發(fā)訪問,就使用StringBuffer;而如果是單任務(wù)訪問,使用StringBuilder會(huì)更有效。StringBuilder類中的方法定義見教材253頁(yè)。2122向字符串緩沖區(qū)添加新的內(nèi)容StringBuilderstrBuf=newStringBuilder();strBuf.append("Welcome");strBuf.append('');strBuf.append("to");strBuf.append('');strBuf.append("Java");注意:需要對(duì)字符串進(jìn)行改變時(shí),可考慮采用StringBuilder/StringBuffer類代替String類.修改緩沖區(qū)中的內(nèi)容23StringBuilderstrBuf="WelcometoJava";strBuf.delete(8,11);strBuf.deleteCharAt(8);strBuf.reverse();strBuf.replace(11,15,"HTML");strBuf.SetChatAt(0,’w’);StringTokenizer類java.util.StringTokenizer+StringTokenizer(s:String)構(gòu)造字符串的一個(gè)字符串令牌對(duì)象+StringTokenizer(s:String,delimiters:String)使用指定的邊界構(gòu)造字符串的一個(gè)字符串令牌對(duì)象+StringTokenizer(s:String,delimiters:String,returnDelimiters:boolean)使用指定的邊界構(gòu)造字符串的一個(gè)字符串令牌對(duì)象,并指定是否返回定界符+countTokens():int返回所包含的令牌數(shù)+hasMoreTokens():boolean如果該對(duì)象還有令牌,則返回true+nextToken():String返回下一個(gè)令牌+nextToken(delimiters:String):String使用新定界符返回下一個(gè)令牌25例1Strings="Javaiscool.";StringTokenizertokenizer=newStringTokenizer(s);System.out.println("Thetotalnumberoftokensis"+tokenizer.countTokens());while(tokenizer.hasMoreTokens())System.out.println(tokenizer.nextToken());

結(jié)果顯示Thetotalnumberoftokensis3Javaiscool.26例2Strings="Javaiscool.";StringTokenizertokenizer=newStringTokenizer(s,

"ac");System.out.println("Thetotalnumberoftokensis"+tokenizer.countTokens());while(tokenizer.hasMoreTokens())System.out.println(tokenizer.nextToken());

結(jié)果顯示Thetotalnumberoftokensis4Jvisool.27例3Strings="Javaiscool.";StringTokenizertokenizer=newStringTokenizer(s,"ac",true);System.out.println("Thetotalnumberoftokensis"+tokenizer.countTokens());while(tokenizer.hasMoreTokens())System.out.println(tokenizer.nextToken());

結(jié)果顯示Thetotalnumberoftokensis7Javaiscool.28StringTokenizer類沒有無參構(gòu)造方法StringTokenizer

類沒有無參構(gòu)造方法.正常情況下,一個(gè)好的編程實(shí)例應(yīng)該為每個(gè)類提供一個(gè)無參構(gòu)造方法.然而,在個(gè)別情況下,無參構(gòu)造方法是沒有意義的,StringTokenizer

就是這樣一個(gè)例子.StringTokenizer

對(duì)象必須是為某一個(gè)字符串而創(chuàng)建的,該字符串應(yīng)該作為參數(shù)傳遞給它的構(gòu)造方法。29字符串掃描類Scanner在StringTokenizer中,定界符是單個(gè)字符。使用JDK1.5中新的java.util.Scanner

類,來指定一個(gè)單詞作為定界符。JDK1.5FeatureStrings="WelcometoJava!Javaisfun!Javaiscool!";Scannerscanner=newScanner(s);scanner.useDelimiter("Java");

while(scanner.hasNext())System.out.println(scanner.next());為字符串構(gòu)造一個(gè)Scanner

的實(shí)例.設(shè)定“Java”為定界符.如果對(duì)象中還有剩下的令牌,則hasNext()返回true.

next()

方法將令牌作為字符串返回Welcometo!isfun!iscool!輸出選講30掃描基本數(shù)據(jù)類型的值如果Token是基本數(shù)據(jù)類型的值,可使用nextByte(),nextShort(),nextInt(),nextLong(),nextFloat(),nextDouble(),或nextBoolean()

方法來獲取它.例如,下述代碼把字符串中所有數(shù)字都加了起來。注意,定界符默認(rèn)為空格。JDK1.5FeatureStrings="1234";Scannerscanner=newScanner(s);

intsum=0;while(scanner.hasNext())sum+=scanner.nextInt();

System.out.println("Sumis"+sum);選講31使用Scanner實(shí)現(xiàn)從控制臺(tái)輸入Scanner類的另一個(gè)應(yīng)用就是從讀入從控制臺(tái)輸入的數(shù)據(jù)。例如,下面的代碼從鍵盤讀入一個(gè)整數(shù):JDK1.5FeatureSystem.out.print("Pleaseenteranintvalue:");Scannerscanner=newScanner(System.in);inti=scanner.nextInt();注意:StringTokenizer

可以指定多個(gè)單個(gè)字符作為定界符,Scanner

可以使用單個(gè)字符或單個(gè)單詞作為界定符。需要使用多個(gè)單個(gè)字符為定界符掃描一個(gè)字符串時(shí),使用StringTokenizer

類.如果需要使用一個(gè)單詞作為定界符,則使用Scanner

類。選講32命令行參數(shù)classTestMain{ publicstaticvoidmain(String[]args){...}}javaTestMainarg0arg1arg2...argn選講33命令行參數(shù)的處理在主方法中,從args[0],args[1],...,args[n]中獲取命令行中arg0,arg1,...,argngettheargumentsfromargs[0]對(duì)應(yīng)的值。選講34舉例:傳遞命令行參數(shù)問題:編寫程序進(jìn)行整數(shù)的二元運(yùn)算。程序接收三個(gè)參數(shù),一個(gè)運(yùn)算符和兩個(gè)整數(shù)。CalculatorjavaCalculator2+3javaCalculator2-3javaCalculator2/3javaCalculator2“*”3選講正則表達(dá)式實(shí)現(xiàn)姓名為Rob,Rod或Ron的匹配:Stringname=student.getName();if(name.equals("Rob")||name.equals("Rod")||name.equals("Ron")){//foundthestudent}Stringname=student.getName();if(name.matches("Ro(b|d|n)")){//foundthestudent}正則表達(dá)式匹配以Java開始,后面跟0個(gè)或多個(gè)字符的串:"Javaisfun".matches("Java.*");"Javaiscool".matches("Java.*");"Java".matches("Java.*");Java.*匹配以字符串Java開始的,后面跟0個(gè)或任意多個(gè)字符的串說明:.代表字符,*代表0個(gè)或多個(gè)正則表達(dá)式把一個(gè)字符串中的$、+或#符號(hào)替換成NNN:Strings="a+b$#c".replaceAll("[$+#]","NNN");System.out.println(s);輸出結(jié)果是:aNNNbNNNNNNc[$+#]匹配$、+或者#的模式。正則表達(dá)式下面語句以標(biāo)點(diǎn)符號(hào)作為分隔符,將字符串分成子串:String[]tokens="Java,C?C#,C++".split("[.,:;?]");for(inti=0;i<tokens.length;i++)System.out.println(tokens[i]);輸出為:JavaCC#C++正則表達(dá)式用Pattern類實(shí)現(xiàn)匹配:booleanb=Pattern.matches("a*b","aaaaab");結(jié)果為:true

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論