![第9章字符串和文本_第1頁(yè)](http://file4.renrendoc.com/view/0c17dde7b34d0dd0c4871f995ce34852/0c17dde7b34d0dd0c4871f995ce348521.gif)
![第9章字符串和文本_第2頁(yè)](http://file4.renrendoc.com/view/0c17dde7b34d0dd0c4871f995ce34852/0c17dde7b34d0dd0c4871f995ce348522.gif)
![第9章字符串和文本_第3頁(yè)](http://file4.renrendoc.com/view/0c17dde7b34d0dd0c4871f995ce34852/0c17dde7b34d0dd0c4871f995ce348523.gif)
![第9章字符串和文本_第4頁(yè)](http://file4.renrendoc.com/view/0c17dde7b34d0dd0c4871f995ce34852/0c17dde7b34d0dd0c4871f995ce348524.gif)
![第9章字符串和文本_第5頁(yè)](http://file4.renrendoc.com/view/0c17dde7b34d0dd0c4871f995ce34852/0c17dde7b34d0dd0c4871f995ce348525.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(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)造字符串的快捷初始化寫(xiě)法。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而言,==用來(lái)比較引用是否相等,equals用來(lái)比較內(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開(kāi)始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è)永久類(lèi);字符串創(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類(lèi)提供了幾個(gè)valueOf靜態(tài)方法,可以將字符,字符數(shù)組,數(shù)值型數(shù)據(jù)轉(zhuǎn)換為字符串。這些方法名稱(chēng)都是valueOf
,參數(shù)分別為char,char[],double,long,int,和float.例如,將一個(gè)double型的數(shù)值轉(zhuǎn)換為字符串
String.valueOf(5.44).返回值是“5.44”這種形式的字符串。18Character
類(lèi)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類(lèi)ΔStringBuilder/StringBuffer
類(lèi)可以代替String
類(lèi)處理字符串的一種方法。一般來(lái)說(shuō),不管在哪里使用字符串,都要用到字符串緩沖區(qū)。
StringBuilder/StringBuffer
類(lèi)比String類(lèi)更靈活.可以在字符串緩沖區(qū)中添加,插入或追加新的內(nèi)容。然而,字符串一旦創(chuàng)建后,它的值就不能被修改。Page252StringBuilder/StringBuffer類(lèi)如果是多任務(wù)并發(fā)訪問(wèn),就使用StringBuffer;而如果是單任務(wù)訪問(wèn),使用StringBuilder會(huì)更有效。StringBuilder類(lèi)中的方法定義見(jiàn)教材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類(lèi)代替String類(lèi).修改緩沖區(qū)中的內(nèi)容23StringBuilderstrBuf="WelcometoJava";strBuf.delete(8,11);strBuf.deleteCharAt(8);strBuf.reverse();strBuf.replace(11,15,"HTML");strBuf.SetChatAt(0,’w’);StringTokenizer類(lèi)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類(lèi)沒(méi)有無(wú)參構(gòu)造方法StringTokenizer
類(lèi)沒(méi)有無(wú)參構(gòu)造方法.正常情況下,一個(gè)好的編程實(shí)例應(yīng)該為每個(gè)類(lèi)提供一個(gè)無(wú)參構(gòu)造方法.然而,在個(gè)別情況下,無(wú)參構(gòu)造方法是沒(méi)有意義的,StringTokenizer
就是這樣一個(gè)例子.StringTokenizer
對(duì)象必須是為某一個(gè)字符串而創(chuàng)建的,該字符串應(yīng)該作為參數(shù)傳遞給它的構(gòu)造方法。29字符串掃描類(lèi)Scanner在StringTokenizer中,定界符是單個(gè)字符。使用JDK1.5中新的java.util.Scanner
類(lèi),來(lái)指定一個(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ù)類(lèi)型的值如果Token是基本數(shù)據(jù)類(lèi)型的值,可使用nextByte(),nextShort(),nextInt(),nextLong(),nextFloat(),nextDouble(),或nextBoolean()
方法來(lái)獲取它.例如,下述代碼把字符串中所有數(shù)字都加了起來(lái)。注意,定界符默認(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類(lèi)的另一個(gè)應(yīng)用就是從讀入從控制臺(tái)輸入的數(shù)據(jù)。例如,下面的代碼從鍵盤(pán)讀入一個(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
類(lèi).如果需要使用一個(gè)單詞作為定界符,則使用Scanner
類(lèi)。選講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ù)問(wèn)題:編寫(xiě)程序進(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開(kāi)始,后面跟0個(gè)或多個(gè)字符的串:"Javaisfun".matches("Java.*");"Javaiscool".matches("Java.*");"Java".matches("Java.*");Java.*匹配以字符串Java開(kāi)始的,后面跟0個(gè)或任意多個(gè)字符的串說(shuō)明:.代表字符,*代表0個(gè)或多個(gè)正則表達(dá)式把一個(gè)字符串中的$、+或#符號(hào)替換成NNN:Strings="a+b$#c".replaceAll("[$+#]","NNN");System.out.println(s);輸出結(jié)果是:aNNNbNNNNNNc[$+#]匹配$、+或者#的模式。正則表達(dá)式下面語(yǔ)句以標(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類(lèi)實(shí)現(xiàn)匹配:booleanb=Pattern.matches("a*b","aaaaab");結(jié)果為:true
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度可再生能源并網(wǎng)合同范本
- 金華浙江金華永康市環(huán)境衛(wèi)生管理處工作人員招聘筆試歷年參考題庫(kù)附帶答案詳解
- 西安2025年陜西西安音樂(lè)學(xué)院專(zhuān)任教師招聘20人筆試歷年參考題庫(kù)附帶答案詳解
- 舟山2025年浙江舟山市定海區(qū)昌國(guó)街道招聘公益性崗位筆試歷年參考題庫(kù)附帶答案詳解
- 八年級(jí)上學(xué)期1月期末語(yǔ)文試題(PDF版無(wú)答案)-3
- 漯河2024年河南漯河西城區(qū)現(xiàn)代服務(wù)業(yè)開(kāi)發(fā)區(qū)工作委員會(huì)人才引進(jìn)筆試歷年參考題庫(kù)附帶答案詳解
- 溫州浙江溫州平陽(yáng)縣科學(xué)技術(shù)局招聘編外工作人員筆試歷年參考題庫(kù)附帶答案詳解
- 溫州2025年浙江溫州永嘉縣人民醫(yī)院醫(yī)共體永嘉縣婦幼保健院招聘(一)筆試歷年參考題庫(kù)附帶答案詳解
- 泉州2025年福建南安市衛(wèi)生事業(yè)單位招聘編制內(nèi)衛(wèi)生類(lèi)工作人員51人筆試歷年參考題庫(kù)附帶答案詳解
- 普洱2025年云南普洱第二中學(xué)招聘編外教學(xué)人員筆試歷年參考題庫(kù)附帶答案詳解
- 金點(diǎn)子活動(dòng)總結(jié)匯報(bào)
- 原料驗(yàn)收標(biāo)準(zhǔn)知識(shí)培訓(xùn)課件
- 江蘇春節(jié)風(fēng)俗 南京夫子廟、鹽水鴨與昆曲
- Unit4MyfamilyStorytime(課件)人教新起點(diǎn)英語(yǔ)三年級(jí)下冊(cè)
- 《麥田怪圈探密》課件
- 物流運(yùn)作管理-需求預(yù)測(cè)
- 《電機(jī)與電氣控制(第三版)習(xí)題冊(cè)》 習(xí)題答案
- 鋼桁梁頂推施工方案
- 醫(yī)療器械采購(gòu)方案投標(biāo)方案(完整技術(shù)標(biāo))
- 交通運(yùn)輸安全工作調(diào)研報(bào)告
- 旅行社導(dǎo)游合同
評(píng)論
0/150
提交評(píng)論