




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2023/2/61字符字符串主要內容字符數據類型及運算charletter=‘A’charnumChar=‘4’char類型數據可以轉換成任意一種數值類型,反之亦然;將一個整數轉換成一個char型數據時,只用到數據的低16位,其余部分被忽略。字符數據類型及運算charletter=‘A’charnumChar=‘4’char類型數據可以轉換成任意一種數值類型,反之亦然;將一個整數轉換成一個char型數據時,只用到數據的低16位,其余部分被忽略。4字符串類String創建一個字符串對象:Stringmessage="WelcometoJava";Stringmessage=newString("WelcometoJava");Strings=newString();獲取字符串長度和在一個字符串中獲取某個單個字符。字符串連接(concat)子串(substring(index)、substring(start,end))比較(equals、compareTo)字符串轉換在一個字符串中找出一個字符或一個子串字符串和數組之間的轉換將字符和數值轉換成字符串5創建字符串對象StringnewString=newString(stringLiteral);
Stringmessage=newString("WelcometoJava");因為字符串使用非常頻繁,所以Java提供一種簡化的方法來初始化一個字符串對象:Stringmessage="WelcometoJava";6字符串是不可變的String對象是不可變的;它的內容是不能改變的。下列代碼會改變字符串的內容嗎?Strings="Java";s="HTML";7跟蹤代碼Strings="Java";s="HTML";8跟蹤代碼Strings="Java";s="HTML";9限定字符串因為字符串在程序設計中是不可變的,但同時又會頻繁地使用,所以Java虛擬機為了提高效率和節約內存,對具有相同字符串序列的字符串直接量使用同一個實例。這樣的實例被稱為限定的(interned)。例如:下面的語句10舉例程序結果顯示
s1==s2是falses1==s3是true如果使用new操作符,就會創建一個新的對象。如果使用字符串初始化方法,如果限定對象已經被創建則沒有新對象被創建。11跟蹤代碼12跟蹤代碼13跟蹤代碼14字符串比較15字符串比較equals Strings1=newString("Welcome"); Strings2="welcome";
if(s1.equals(s2)){//s1ands2havethesamecontents
}
if(s1==s2){//s1ands2havethesamereference
}16字符串比較(續)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在字符串中獲取單個字符不能使用message[0]使用message.charAt(index)下標index從0開始20字符串連接Strings3=s1.concat(s2);Strings3=s1+s2;s1+s2+s3+s4+s5等價于(((s1.concat(s2)).concat(s3)).concat(s4)).concat(s5);21獲取子串22提取子串可以使用charAt方法從字符串中獲取單個字符,你也可以使用String類中的substring方法從字符串中提取子串。Strings1="WelcometoJava";Strings2=s1.substring(0,11)+"HTML";23字符串的轉換、替換和分割24舉例"Welcome".toLowerCase()返回一個新字符串welcome。"Welcome".toUpperCase()返回一個新字符串WELCOME。"Welcome".trim()返回一個新字符串Welcome。"Welcome".replace('e','A')返回一個新字符串WAlcomA。"Welcome".replaceFirst("e","AB")返回一個新字符串WABlcome。"Welcome".replace("e","AB")返回一個新字符串WABlcomAB。"Welcome".replace("el","AB")返回一個新字符串WABlcome。25分割字符String[]tokens="Java#HTML#Perl".split("#",0);for(inti=0;i<tokens.length;i++)System.out.print(tokens[i]+"");JavaHTMLPerl顯示26依照模式匹配、替換和分割可以通過指定某個模式來匹配、替換或分割一個字符串。這是一種非常有用且功能強大的特性,通常稱之為正則表達式(regularexpression)。"Java".matches("Java");"Java".equals("Java");"Javaisfun".matches("Java.*");"Javaiscool".matches("Java.*");27依照模式匹配、替換和分隔方法replaceAll、replaceFirst和split也可以和正則表達式結合在一起使用。例如:下面的語句中用字符串NNN替換"a+b$#c"中的$、+或者#,然后返回一個新字符串。Strings="a+b$#c".replaceAll("[$+#]","NNN");System.out.println(s);這里的正則表達式[$+#]表示能夠匹配$、+或者#模式。所以,輸出是aNNNbNNNNNNc。
28依照模式匹配、替換和分隔下面的語句將字符串分隔為由標點符號分隔開的字符串數組。String[]tokens="Java,C?C#,C++".split("[.,:;?]");
for(inti=0;i<tokens.length;i++)System.out.println(tokens[i]);29找出字符串中的某個字符或者某個子串30找出字符串中的某個字符或者某個子串"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將字符和數字轉換成字符串String類提供了幾個靜態的valueOf方法能夠將字符、字符數組和數值轉換成字符串。這些方法都有同樣的名字valueOf,但有不同類型的參數類型:char、char[]、double、long、int和float型。例如:為了將一個double值轉換為一個字符串,使用String.valueOf(5.44)。返回值是一個由字符"5"、"."、"4"和"4"構成的字符串。32問題:找出回文串目的:檢測一個字符串是否是回文串:從前向后和從后向前讀都是同一個字符串的字符串。程序實現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");}
程序實現/**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問題:統計字符串中每個字母的出現次數這個例子給出一個程序,統計在忽略字母大小寫的情況下,字符串中每個字母出現的次數。38編程實現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編程實現/**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類更靈活。可以給一個StringBuilder或StringBuffer中添加、插入或追加新的內容,但是String對象一旦創建,它的值就確定了。41StringBuilder的構造方法42修改生成器中的字符串43舉例stringBuilder.append("Java");stringBuilder.insert(11,"HTMLand");stringBuilder.delete(8,11)將生成器變為WelcomeJava。stringBuilder.deleteCharAt(8)將生成器變為WelcomeoJava。stringBuilder.reverse()將生成器變為avaJotemocleW。stringBuilder.replace(11,15,"HTML")將生成器變為WelcometoHTML。stringBuilder.setCharAt(0,'w')將生成器變為welcometoJava。44toString、capacity、length、setLength和charAt方法45問題:忽略既非字母又非數字的
字符來判斷回文串這個例子給出一個程序,檢測一個字符串在忽略掉非字母和非數字的字符后,它是否是一個回文串。編程實現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);}編程實現/**Createanewstringbyeliminatingnon-alphanumericchars*/publicstaticStringfilter(Strings){//CreateastringbuilderStringBuilderstringBuilder=newStringBuilder();//Examineeachcharinthestringtoskipalphanumericcharfor(inti=0;i<s.length();i++){if(Character.isLetterOrDigit
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司總經理薪酬管理制度
- 景區環衛制度管理制度
- 創業板上市公司管理制度
- 幼兒園對外出口管理制度
- 化工廠自備電廠管理制度
- 幼兒園采購制度管理制度
- 普及寵物酒店管理制度
- 2025年工業涂料水性色漿項目規劃申請報告
- 印刷品規定五項管理制度
- 景點日常安全管理制度
- 第三方檢測市場部管理制度提成方案
- 學前兒童發展心理學-情感
- 二年級下冊數學教案 《生活中的大數》練習課 北師大版
- GB∕T 16762-2020 一般用途鋼絲繩吊索特性和技術條件
- 電網施工作業票模板
- 精選天津市初中地理會考試卷及答案
- T∕CAEPI 31-2021 旋轉式沸石吸附濃縮裝置技術要求
- 國家級高技能人才培訓基地建設項目實施管理辦法
- 彩盒成品檢驗標準
- 落地單排腳手架
- 高層購物中心AAC墻體板材施工方案
評論
0/150
提交評論