![第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)說明:本文檔由用戶提供并上傳,收益歸屬內(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 服裝紡織行業(yè)的顧問工作總結(jié)
- 2025年全球及中國(guó)無人值守汽車衡亭行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)化學(xué)鍍鎳 PTFE 涂層行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)一體式旋轉(zhuǎn)變壓器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球軟組織水平種植體行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球保險(xiǎn)業(yè)的低代碼和無代碼 (LCNC) 平臺(tái)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)加熱架式食物加熱器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)商用車氣制動(dòng)防抱死制動(dòng)系統(tǒng)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)熱水浴缸用換熱器行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)變電站智能巡視解決方案行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年人教五四新版八年級(jí)物理上冊(cè)階段測(cè)試試卷含答案
- 2025新人教版英語七年級(jí)下單詞表(小學(xué)部分)
- 2025年春季1530安全教育記錄主題
- 礦山2025年安全工作計(jì)劃
- 基本藥物制度政策培訓(xùn)課件
- 2025年包裝印刷項(xiàng)目可行性研究報(bào)告
- 2025年九年級(jí)物理中考復(fù)習(xí)計(jì)劃
- 企業(yè)融資報(bào)告特斯拉成功案例分享
- 合資經(jīng)營(yíng)工廠合同范本
- 2024年新疆(兵團(tuán))公務(wù)員考試《行測(cè)》真題及答案解析
- 2024年《論教育》全文課件
評(píng)論
0/150
提交評(píng)論