第6講字符和字符串_第1頁
第6講字符和字符串_第2頁
第6講字符和字符串_第3頁
第6講字符和字符串_第4頁
第6講字符和字符串_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2023/2/61字符字符串主要內(nèi)容字符數(shù)據(jù)類型及運(yùn)算charletter=‘A’charnumChar=‘4’char類型數(shù)據(jù)可以轉(zhuǎn)換成任意一種數(shù)值類型,反之亦然;將一個(gè)整數(shù)轉(zhuǎn)換成一個(gè)char型數(shù)據(jù)時(shí),只用到數(shù)據(jù)的低16位,其余部分被忽略。字符數(shù)據(jù)類型及運(yùn)算charletter=‘A’charnumChar=‘4’char類型數(shù)據(jù)可以轉(zhuǎn)換成任意一種數(shù)值類型,反之亦然;將一個(gè)整數(shù)轉(zhuǎn)換成一個(gè)char型數(shù)據(jù)時(shí),只用到數(shù)據(jù)的低16位,其余部分被忽略。4字符串類String創(chuàng)建一個(gè)字符串對(duì)象:Stringmessage="WelcometoJava";Stringmessage=newString("WelcometoJava");Strings=newString();獲取字符串長度和在一個(gè)字符串中獲取某個(gè)單個(gè)字符。字符串連接(concat)子串(substring(index)、substring(start,end))比較(equals、compareTo)字符串轉(zhuǎn)換在一個(gè)字符串中找出一個(gè)字符或一個(gè)子串字符串和數(shù)組之間的轉(zhuǎn)換將字符和數(shù)值轉(zhuǎn)換成字符串5創(chuàng)建字符串對(duì)象StringnewString=newString(stringLiteral);

Stringmessage=newString("WelcometoJava");因?yàn)樽址褂梅浅nl繁,所以Java提供一種簡化的方法來初始化一個(gè)字符串對(duì)象:Stringmessage="WelcometoJava";6字符串是不可變的String對(duì)象是不可變的;它的內(nèi)容是不能改變的。下列代碼會(huì)改變字符串的內(nèi)容嗎?Strings="Java";s="HTML";7跟蹤代碼Strings="Java";s="HTML";8跟蹤代碼Strings="Java";s="HTML";9限定字符串因?yàn)樽址诔绦蛟O(shè)計(jì)中是不可變的,但同時(shí)又會(huì)頻繁地使用,所以Java虛擬機(jī)為了提高效率和節(jié)約內(nèi)存,對(duì)具有相同字符串序列的字符串直接量使用同一個(gè)實(shí)例。這樣的實(shí)例被稱為限定的(interned)。例如:下面的語句10舉例程序結(jié)果顯示

s1==s2是falses1==s3是true如果使用new操作符,就會(huì)創(chuàng)建一個(gè)新的對(duì)象。如果使用字符串初始化方法,如果限定對(duì)象已經(jīng)被創(chuàng)建則沒有新對(duì)象被創(chuàng)建。11跟蹤代碼12跟蹤代碼13跟蹤代碼14字符串比較15字符串比較equals Strings1=newString("Welcome"); Strings2="welcome";

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

}

if(s1==s2){//s1ands2havethesamereference

}16字符串比較(續(xù))compareTo(Objectobject) Strings1=newString("Welcome"); Strings2="welcome";

if(pareTo(s2)>0){//s1isgreaterthans2}elseif(pareTo(s2)==0){//s1ands2havethesamecontents}else//s1islessthans217字符串長度、字符

以及組合字符串18獲取字符串長度使用length()方法獲取字符串的長度:message="Welcome";message.length()(返回7)19在字符串中獲取單個(gè)字符不能使用message[0]使用message.charAt(index)下標(biāo)index從0開始20字符串連接Strings3=s1.concat(s2);Strings3=s1+s2;s1+s2+s3+s4+s5等價(jià)于(((s1.concat(s2)).concat(s3)).concat(s4)).concat(s5);21獲取子串22提取子串可以使用charAt方法從字符串中獲取單個(gè)字符,你也可以使用String類中的substring方法從字符串中提取子串。Strings1="WelcometoJava";Strings2=s1.substring(0,11)+"HTML";23字符串的轉(zhuǎn)換、替換和分割24舉例"Welcome".toLowerCase()返回一個(gè)新字符串welcome。"Welcome".toUpperCase()返回一個(gè)新字符串WELCOME。"Welcome".trim()返回一個(gè)新字符串Welcome。"Welcome".replace('e','A')返回一個(gè)新字符串WAlcomA。"Welcome".replaceFirst("e","AB")返回一個(gè)新字符串WABlcome。"Welcome".replace("e","AB")返回一個(gè)新字符串WABlcomAB。"Welcome".replace("el","AB")返回一個(gè)新字符串WABlcome。25分割字符String[]tokens="Java#HTML#Perl".split("#",0);for(inti=0;i<tokens.length;i++)System.out.print(tokens[i]+"");JavaHTMLPerl顯示26依照模式匹配、替換和分割可以通過指定某個(gè)模式來匹配、替換或分割一個(gè)字符串。這是一種非常有用且功能強(qiáng)大的特性,通常稱之為正則表達(dá)式(regularexpression)。"Java".matches("Java");"Java".equals("Java");"Javaisfun".matches("Java.*");"Javaiscool".matches("Java.*");27依照模式匹配、替換和分隔方法replaceAll、replaceFirst和split也可以和正則表達(dá)式結(jié)合在一起使用。例如:下面的語句中用字符串NNN替換"a+b$#c"中的$、+或者#,然后返回一個(gè)新字符串。Strings="a+b$#c".replaceAll("[$+#]","NNN");System.out.println(s);這里的正則表達(dá)式[$+#]表示能夠匹配$、+或者#模式。所以,輸出是aNNNbNNNNNNc。

28依照模式匹配、替換和分隔下面的語句將字符串分隔為由標(biāo)點(diǎn)符號(hào)分隔開的字符串?dāng)?shù)組。String[]tokens="Java,C?C#,C++".split("[.,:;?]");

for(inti=0;i<tokens.length;i++)System.out.println(tokens[i]);29找出字符串中的某個(gè)字符或者某個(gè)子串30找出字符串中的某個(gè)字符或者某個(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。

31將字符和數(shù)字轉(zhuǎn)換成字符串String類提供了幾個(gè)靜態(tài)的valueOf方法能夠?qū)⒆址?、字符?shù)組和數(shù)值轉(zhuǎn)換成字符串。這些方法都有同樣的名字valueOf,但有不同類型的參數(shù)類型:char、char[]、double、long、int和float型。例如:為了將一個(gè)double值轉(zhuǎn)換為一個(gè)字符串,使用String.valueOf(5.44)。返回值是一個(gè)由字符"5"、"."、"4"和"4"構(gòu)成的字符串。32問題:找出回文串目的:檢測一個(gè)字符串是否是回文串:從前向后和從后向前讀都是同一個(gè)字符串的字符串。程序?qū)崿F(xiàn)importjava.util.Scanner;publicclassCheckPalindrome{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.print("Enterastring:");Strings=input.nextLine();if(isPalindrome(s))System.out.println(s+"isapalindrome");elseSystem.out.println(s+"isnotapalindrome");}

程序?qū)崿F(xiàn)/**Checkifastringisapalindrome*/publicstaticbooleanisPalindrome(Strings){//Theindexofthefirstcharacterinthestringintlow=0;//Theindexofthelastcharacterinthestringinthigh=s.length()-1;while(low<high){if(s.charAt(low)!=s.charAt(high))returnfalse;//Notapalindromelow++;high--;}returntrue;//Thestringisapalindrome}}35Character類36舉例CharactercharObject=newCharacter('b');charOpareTo(newCharacter('a'))返回1charOpareTo(newCharacter('b'))返回0charOpareTo(newCharacter('c'))返回-1charOpareTo(newCharacter('d')返回–2charObject.equals(newCharacter('b'))返回truecharObject.equals(newCharacter('d'))返回false37問題:統(tǒng)計(jì)字符串中每個(gè)字母的出現(xiàn)次數(shù)這個(gè)例子給出一個(gè)程序,統(tǒng)計(jì)在忽略字母大小寫的情況下,字符串中每個(gè)字母出現(xiàn)的次數(shù)。38編程實(shí)現(xiàn)importjava.util.Scanner;publicclassCountEachLetter{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.print("Enterastring:");Strings=input.nextLine();//InvokethecountLettersmethodtocounteachletterint[]counts=countLetters(s.toLowerCase());//Displayresultsfor(inti=0;i<counts.length;i++){if(counts[i]!=0)System.out.println((char)('a'+i)+"appears"+counts[i]+((counts[i]==1)?"time":"times"));}}

39編程實(shí)現(xiàn)/**Counteachletterinthestring*/publicstaticint[]countLetters(Strings){int[]counts=newint[26];for(inti=0;i<s.length();i++){if(Character.isLetter(s.charAt(i)))counts[s.charAt(i)-'a']++;}returncounts;}}40StringBuilder/StringBuffer類StringBuilder/StringBuffer類是可以替代String類的另一種處理字符串的解決方案。一般來說,只要使用字符串的地方,都可以使用StringBuilder/StringBuffer類。StringBuilder/StringBuffer類比String類更靈活??梢越o一個(gè)StringBuilder或StringBuffer中添加、插入或追加新的內(nèi)容,但是String對(duì)象一旦創(chuàng)建,它的值就確定了。41StringBuilder的構(gòu)造方法42修改生成器中的字符串43舉例stringBuilder.append("Java");stringBuilder.insert(11,"HTMLand");stringBuilder.delete(8,11)將生成器變?yōu)閃elcomeJava。stringBuilder.deleteCharAt(8)將生成器變?yōu)閃elcomeoJava。stringBuilder.reverse()將生成器變?yōu)閍vaJotemocleW。stringBuilder.replace(11,15,"HTML")將生成器變?yōu)閃elcometoHTML。stringBuilder.setCharAt(0,'w')將生成器變?yōu)閣elcometoJava。44toString、capacity、length、setLength和charAt方法45問題:忽略既非字母又非數(shù)字的

字符來判斷回文串這個(gè)例子給出一個(gè)程序,檢測一個(gè)字符串在忽略掉非字母和非數(shù)字的字符后,它是否是一個(gè)回文串。編程實(shí)現(xiàn)importjava.util.Scanner;publicclassPalindromeIgnoreNonAlphanumeric{publicstaticvoidmain(String[]args){Scannerinput=newScanner(System.in);System.out.print("Enterastring:");Strings=input.nextLine();System.out.println("Ignoringnon-alphanumericcharacters,\nis"+s+"apalindrome?"+isPalindrome(s));}/**Returntrueifastringisapalindrome*/publicstaticbooleanisPalindrome(Strings){Strings1=filter(s);//Createanewstringthatisthereversalofs1Strings2=reverse(s1);//Compareifthereversalisthesameastheoriginalstringreturns2.equals(s1);}編程實(shí)現(xiàn)/**Createanewstringbyeliminatingnon-alphanumericchars*/publicstaticStringfilter(Strings){//CreateastringbuilderStringBuilderstringBuilder=newStringBuilder();//Examineeachcharinthestringtoskipalphanumericcharfor(inti=0;i<s.length();i++){if(Character.isLetterOrDigit

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論