AI賦能Java語(yǔ)言編程:從入門到高階 課件 第五章 字符串_第1頁(yè)
AI賦能Java語(yǔ)言編程:從入門到高階 課件 第五章 字符串_第2頁(yè)
AI賦能Java語(yǔ)言編程:從入門到高階 課件 第五章 字符串_第3頁(yè)
AI賦能Java語(yǔ)言編程:從入門到高階 課件 第五章 字符串_第4頁(yè)
AI賦能Java語(yǔ)言編程:從入門到高階 課件 第五章 字符串_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

字符串Strings第五章目標(biāo)/OBJECTIVE0102030405領(lǐng)悟字符串的本質(zhì)熟練字符串的操作方法掌握字符串的格式化技術(shù)熟練運(yùn)用字符串方法熟悉正則表達(dá)式的匹配技術(shù)01

初識(shí)字符串

5.1初識(shí)字符串在Java編程語(yǔ)言中,字符串是不可變的,這意味著一旦創(chuàng)建了字符串對(duì)象,就無(wú)法更改其內(nèi)容。字符串在Java中是通過java.lang.String類來(lái)表示的。以下是一些關(guān)于Java字符串的特性:1.不可變性(Immutable):字符串一旦被創(chuàng)建,其內(nèi)容不能被修改。任何對(duì)字符串的操作都會(huì)產(chǎn)生一個(gè)新的字符串對(duì)象。2.String類:字符串是通過String類來(lái)表示的。這個(gè)類提供了許多用于操作字符串的方法,如拼接、比較、截取等。3.字符串字面值:在Java中,可以使用雙引號(hào)創(chuàng)建字符串字面值,例如:"Hello,World!"。這是一種創(chuàng)建字符串對(duì)象的簡(jiǎn)便方式。4.字符串方法:String類提供了許多實(shí)用的方法,如length()(獲取字符串長(zhǎng)度)、charAt(index)(獲取指定位置的字符)、substring(beginIndex,endIndex)(獲取子字符串)等。字符串的特性5.1初識(shí)字符串

一、使用字符串字面值:這是最簡(jiǎn)單和常見的方式,直接使用雙引號(hào)括起來(lái)的字符序列來(lái)創(chuàng)建字符串。Stringstr="Hello,World!";二、使用String類的構(gòu)造方法:可以使用String類的構(gòu)造方法來(lái)創(chuàng)建字符串對(duì)象。這種方法允許在運(yùn)行時(shí)動(dòng)態(tài)地創(chuàng)建字符串。Stringstr=newString("Hello,World!");字符串的創(chuàng)建02字符串的操作5.2字符串的操作字符串的基本操作一、字符串拼接:字符串連接是指將兩個(gè)或多個(gè)字符串合并成一個(gè)新的字符串的操作。在Java中,可以使用不同的方法進(jìn)行字符串連接。5.2字符串的操作字符串的基本操作二、字符串比較5.2字符串的操作字符串的基本操作三、字符串長(zhǎng)度和字符索引字符串的索引操作可以逐個(gè)訪問字符串中的字符,執(zhí)行各種字符級(jí)別的操作。以上是關(guān)于字符串連接、比較,以及字符串長(zhǎng)度和字符索引的基礎(chǔ)知識(shí)。這些操作是處理字符串時(shí)必不可少的基礎(chǔ)操作,對(duì)于構(gòu)建各種應(yīng)用都具有重要意義。例題5.1在Java字符串部落中,有一位年輕的勇士正要做任務(wù)。請(qǐng)與其共同完成以下任務(wù):1.請(qǐng)定義兩個(gè)字符串變量str1和stri2,其內(nèi)容分別為"Java"和"Programming"。2.使用"+"運(yùn)算符將這兩個(gè)字符串連接起來(lái),并將結(jié)果存儲(chǔ)在一個(gè)新的字符串變量str3中。3.使用equals()方法比較新的字符串與"JavaProgramming"是否相等,并將比較結(jié)果存儲(chǔ)在一個(gè)布爾變量result中。4.使用charAt()方法獲取str3中索引為5的字符,并將結(jié)果存儲(chǔ)在一個(gè)字符變量ch中。5.輸出變量str3、result、ch的內(nèi)容。5.2字符串的操作例題5.1Copilot指令:5.2字符串的操作任務(wù)1:請(qǐng)定義兩個(gè)字符串變量str1和stri2,其內(nèi)容分別為"Java"和"Programming"。任務(wù)2:使用"+"運(yùn)算符將這兩個(gè)字符串連接起來(lái),并將結(jié)果存儲(chǔ)在一個(gè)新的字符串變量str3中。任務(wù)3:使用equals()方法比較新的字符串與"JavaProgramming"是否相等,并將比較結(jié)果存儲(chǔ)在一個(gè)布爾變量result中。任務(wù)4:使用charAt()方法獲取新字符串中索引為5的字符,并將結(jié)果存儲(chǔ)在一個(gè)字符變量ch中。任務(wù)5:輸出變量str3、result、ch的內(nèi)容。請(qǐng)編寫一個(gè)程序來(lái)完成以上任務(wù)。publicclassTest{

publicstaticvoidmain(String[]args){

//Task1

Stringstr1="Java";

Stringstr2="Programming";

//Task2

Stringstr3=str1+str2;

//Task3

booleanresult=str3.equals("JavaProgramming");

例題5.1引導(dǎo)Copilot生成的代碼如下所示:5.2字符串的操作

//Task4

charch=str3.charAt(5);

//Task5

System.out.println("str3:"+str3);

System.out.println("result:"+result);

System.out.println("ch:"+ch);

}}5.2字符串的操作

一、.StringBuffer類,指可變字符序列,用于構(gòu)造字符串對(duì)象。其內(nèi)部使用自動(dòng)擴(kuò)容的數(shù)組來(lái)操作字符串?dāng)?shù)據(jù)。StringBuffer類常用構(gòu)造器:1.StringBuffer():構(gòu)造一個(gè)不帶字符的字符串緩沖區(qū),其初始容量為16個(gè)字符。2.StringBuffer(intcapacity):構(gòu)造一個(gè)不帶字符,但具有指定初始容量的字符串緩沖區(qū)。即可對(duì)byte[]value的大小進(jìn)行指定。3.StringBuffer(Stringstr):構(gòu)造一個(gè)字符串緩沖區(qū),并將其內(nèi)容初始化為指定字符串的內(nèi)容。StringBuilder和StringBuffer5.2字符串的操作

StringBuffer類常用方法:1.int

length():該方法可以獲取到當(dāng)前StringBuffer容器中字符串的有效長(zhǎng)度。2.int

capacity():該方法可以返回當(dāng)前容器的容量。3.StringBufferappend(...):該方法可以將傳入的形參對(duì)應(yīng)的字符串加入到當(dāng)前容器中。4.StringBufferdelete(intstart,intend):該方法可以刪除當(dāng)前容器中指定序列部分的內(nèi)容。傳入的兩個(gè)形參代表了刪除的區(qū)間——[start,end),仍然是熟悉的前閉后開。StringBuilder和StringBuffer5.2字符串的操作

StringBuffer類常用方法:5.StringBufferreplace(intstart,intend,Stringstr):該方法可以將當(dāng)前容器中指定序列部分的字符串替換為傳入的str字符串。前兩個(gè)形參的作用同delete方法的形參。最后一個(gè)形參為最終替換成的字符串。 6.StringBufferreverse():該方法可以將當(dāng)前容器中的字符串反轉(zhuǎn)順序后再返回。7.StringBufferinsert(intoffset,Stringstr):該方法可以在當(dāng)前容器中字符串的指定索引處插入一段字符串,原字符串中的內(nèi)容從該索引處自動(dòng)后移。由于StringBuilder類使用和StringBuffer類兼容的API,因此,這兩者的常用方法基本相同。故在此只展示其中一種。StringBuilder和StringBuffer5.2字符串的操作

二、StringBuilder類被設(shè)計(jì)用作StringBuffer類的一個(gè)簡(jiǎn)易替換,用在字符緩沖區(qū)被單個(gè)線程使用的時(shí)候。但在實(shí)際開發(fā)中,由于StringBuilder類效率比StringBuffer類還要高。因此,建議在滿足單線程的基礎(chǔ)上,優(yōu)先使用StringBuilder類。StringBuilder類常用構(gòu)造器:1.StringBuilder():構(gòu)造一個(gè)不帶字符的字符串緩沖區(qū),其初始容量為16個(gè)字符。2.StringBuilder(intcapacity):構(gòu)造一個(gè)不帶字符,但具有指定初始容量的字符串緩沖區(qū)。即可對(duì)byte[]value的大小進(jìn)行指定。3.StringBuilder(Stringstr):構(gòu)造一個(gè)字符串緩沖區(qū),并將其內(nèi)容初始化為指定字符串的內(nèi)容。StringBuilder和StringBuffer的區(qū)別在于線程安全性,StringBuilder不是線程安全的,而StringBuffer是線程安全的,適用于多線程環(huán)境。StringBuilder和StringBuffer5.2字符串的操作字符串的格式化5.2字符串的操作字符串的格式化1.在java中格式化字符串的最常見方法是使用String.format()。2.對(duì)于格式化的控制臺(tái)輸出,還可以使用printf()或System.out和System.errPrintStreams的format()方法。3.創(chuàng)建一個(gè)Formatter并將其鏈接到StringBuilder。使用format()方法格式化的輸出將附加到StringBuilder。Stringoutput=String.format("%s=%d","joe",35);System.out.printf("Mynameis:%s%n","joe");StringBuildersbuf=newStringBuilder();Formatterfmt=newFormatter(sbuf);fmt.format("PI=%f%n",Math.PI);System.out.print(sbuf.toString());//youcancontinuetoappenddatatosbufhere.例題5.2在Java字符串部落中,有一位年輕的工匠擅長(zhǎng)在雕刻中使用字符串作為圖紋。請(qǐng)與其共同完成以下任務(wù):1.使用String類的構(gòu)造方法創(chuàng)建一個(gè)字符串對(duì)象str1,內(nèi)容為"JavaProgrammingisfun!"。2.使用StringBuilder類將str1轉(zhuǎn)換為全大寫,并將結(jié)果存儲(chǔ)在一個(gè)新的字符串變量str2中。3.使用StringBuffer類在str2后面添加兩個(gè)感嘆號(hào)"!",并將結(jié)果存儲(chǔ)在一個(gè)新的字符串變量str3中。4.使用printf方法將str3進(jìn)行格式化輸出,格式為:"Ethan'smasterpiece:%s"。5.2字符串的操作例題5.2Copilot指令:5.2字符串的操作任務(wù)1:使用String類的構(gòu)造方法創(chuàng)建一個(gè)字符串對(duì)象str1,內(nèi)容為"JavaProgrammingisfun!"。任務(wù)2:使用StringBuilder類將str1轉(zhuǎn)換為全大寫,并將結(jié)果存儲(chǔ)在一個(gè)新的字符串變量str2中。任務(wù)3:使用StringBuffer類在str2后面添加兩個(gè)感嘆號(hào)"!",并將結(jié)果存儲(chǔ)在一個(gè)新的字符串變量str3中。任務(wù)4:使用printf方法將str3進(jìn)行格式化輸出,格式為:"Ethan'smasterpiece:%s"。請(qǐng)編寫一個(gè)程序來(lái)完成以上任務(wù)。例題5.2Copilot指令:引導(dǎo)Copilot生成的代碼如下所示:5.2字符串的操作publicclassTest{

publicstaticvoidmain(String[]args){

//Task1

Stringstr1=newString("JavaProgrammingisfun!");

//Task2

StringBuildersb=newStringBuilder(str1);

Stringstr2=sb.toString().toUpperCase();

//Task3

StringBufferstringBuffer=newStringBuffer(str2);

stringBuffer.append("!!");

Stringstr3=stringBuffer.toString();

//Task4

System.out.printf("Ethan'smasterpiece:%s",str3);

}}5.2字符串的操作字符串方法在Java中,字符串類提供了許多方法來(lái)進(jìn)行各種字符串操作。這一節(jié)將介紹一些常用的字符串方法,包括charAt()、indexOf()、lastIndexOf()、substring()、length()以及isEmpty()。5.2字符串的操作字符串方法一、charAt()、indexOf()、lastIndexOf()等方法的使用5.2字符串的操作字符串方法二、substring()方法:用于截取字符串的子串。5.2字符串的操作字符串方法三、length()方法和isEmpty()方法5.2字符串的操作例題5.3在Java字符串部落中,有一位女孩正在測(cè)試字符串處理能力。請(qǐng)與其共同完成以下任務(wù):1.創(chuàng)建一個(gè)字符串變量str1,內(nèi)容為:"Welcometothejungle!Itgetsworsehereeveryday."。2.使用indexOf()方法找到字符串中第一次出現(xiàn)字符'w'的位置,并將其存儲(chǔ)在一個(gè)整數(shù)變量num中。3.使用substring()方法截取字符串中從第一個(gè)'w'出現(xiàn)位置開始到結(jié)尾的子串,并將結(jié)果存儲(chǔ)在一個(gè)新的字符串變量str2中。4.使用isEmpty()方法判斷截取得到的子串是否為空,并將判斷結(jié)果存儲(chǔ)在一個(gè)布爾變量result中。5.輸出變量str1、str2、num、result的內(nèi)容。例題5.3Copilot指令:5.2字符串的操作任務(wù)1:創(chuàng)建一個(gè)字符串變量str1,內(nèi)容為:"Welcometothejungle!Itgetsworsehereeveryday."。任務(wù)2:使用indexOf()方法找到字符串中第一次出現(xiàn)字符'w'的位置,并將其存儲(chǔ)在一個(gè)整數(shù)變量num中。任務(wù)3:使用substring()方法截取字符串中從第一個(gè)'w'出現(xiàn)位置開始到結(jié)尾的子串,并將結(jié)果存儲(chǔ)在一個(gè)新的字符串變量str2中。任務(wù)4:使用isEmpty()方法判斷截取得到的子串是否為空,并將判斷結(jié)果存儲(chǔ)在一個(gè)布爾變量result中。任務(wù)5:輸出變量str1、str2、num、result的內(nèi)容。請(qǐng)編寫一個(gè)程序來(lái)完成以上任務(wù)。例題5.35.2字符串的操作publicclassTest{

publicstaticvoidmain(String[]args){

//Task1

Stringstr1="Welcometothejungle!Itgetsworsehereeveryday.";

//Task2

intnum=str1.indexOf('w');

//Task3

Stringstr2=str1.substring(num);

引導(dǎo)Copilot生成的代碼如下所示:

//Task4

booleanresult=str2.isEmpty();

//Task5

System.out.println("str1:"+str1);

System.out.println("str2:"+str2);

System.out.println("num:"+num);

System.out.println("result:"+result);

}}03正則表達(dá)式5.3正則表達(dá)式正則表達(dá)式的基本概念正則表達(dá)式是一種強(qiáng)大而靈活的文本匹配工具,用于在字符串中查找、替換和匹配模式。以下是正則表達(dá)式的基本概念:字符類:使用方括號(hào)[]表示,用于匹配一個(gè)字符的集合。例如:[abc]表示匹配字符'a'、'b'或'c'。元字符:具有特殊意義的字符,例如^、$、.、*等。例如:^表示匹配字符串的開頭,$表示匹配字符串的結(jié)尾。量詞:用于指定匹配的次數(shù)。例如:*表示零個(gè)或多個(gè),+表示一個(gè)或多個(gè),?表示零個(gè)或一個(gè)。轉(zhuǎn)義字符:使用反斜杠\來(lái)轉(zhuǎn)義元字符,使其失去特殊意義。例如:\.表示匹配點(diǎn)字符.而不是任意字符。5.3正則表達(dá)式使用Pattern和Matcher類進(jìn)行正則匹配pattern()返回正則表達(dá)式的字符串形式,其實(shí)就是返回Pplile(Stringregex)的regex參數(shù)。1.Pattern.split(CharSequenceinput):用于分隔字符串,并返回一String[],String.split(Stringregex)是通過Pattern.split(CharSequenceinput)來(lái)實(shí)現(xiàn)的。

Patternp=Ppile("\\d+");

String[]str=p.split("QQ號(hào)是:456456電話是:0532214郵箱是:aaa@");

//結(jié)果:str[0]="QQ號(hào)是:"str[1]="電話是:"str[2]="郵箱是:aaa@"

5.3正則表達(dá)式使用Pattern和Matcher類進(jìn)行正則匹配2.Pattern.matcher(Stringregex,CharSequenceinput)

是一個(gè)靜態(tài)方法,用于快速匹配字符串,該方法適合用于只匹配一次,且匹配全部字符串.。Pattern.matches("\\d+","2223");//返回true

Pattern.matches("\\d+","2223aa");//返回false,需要匹配到所有字符串才能返回true,這里aa不能匹配到

Pattern.matches("\\d+","22bb23");//返回false,需要匹配到所有字符串才能返回true,這里bb不能匹配到

5.3正則表達(dá)式使用Pattern和Matcher類進(jìn)行正則匹配3.Pattern.matcher(CharSequenceinput):返回一個(gè)Matcher對(duì)象。Matcher類的構(gòu)造方法也是私有的,不能隨意創(chuàng)建,只能通過Pattern.matcher(CharSequenceinput)方法得到該類的實(shí)例.。Patternp=Ppile("\\d+");

Matcherm=p.matcher("22bb23");

m.pattern();//返回p也就是返回該Matcher對(duì)象是由哪個(gè)Pattern對(duì)象的創(chuàng)建的

5.3正則表達(dá)式使用Pattern和Matcher類進(jìn)行正則匹配4.Matcher.matches()方法、Matcher.lookingAt()方法、Matcher.find()方法Matcher類提供三個(gè)匹配操作方法,三個(gè)方法均返回boolean類型,當(dāng)匹配到時(shí)返回true,沒匹配到則返回false。matches()對(duì)整個(gè)字符串進(jìn)行匹配,只有整個(gè)字符串都匹配了才返回true。Patternp=Ppile("\\d+");

Matcherm=p.matcher("22bb23");

m.matches();//返回false,因?yàn)閎b不能被\d+匹配,導(dǎo)致整個(gè)字符串匹配未成功.

Matcherm2=p.matcher("2223");

m2.matches();//返回true,因?yàn)閈d+匹配到了整個(gè)字符串

Patternp=Ppile("\\d+");

Matcherm=p.matcher("22bb23");5.3正則表達(dá)式使用Pattern和Matcher類進(jìn)行正則匹配在Java中,可以使用Pattern和Matcher類進(jìn)行正則匹配。例題5.4在Java字符串部落中,有一位年輕獵手擅長(zhǎng)使用正則表達(dá)式來(lái)捕捉字符串中的特定模式,請(qǐng)與其共同以下任務(wù):1.創(chuàng)建一個(gè)字符串str,內(nèi)容為:"ThecodeisAB-123andXY-456isthesecretcode."。2.使用正則表達(dá)式找出所有形如"XX-YYY"(其中X和Y是字母,Y是數(shù)字)的模式,并將它們存儲(chǔ)在一個(gè)新的字符串?dāng)?shù)組arr中。3.使用Pattern和Matcher類進(jìn)行正則匹配,找出所有符合要求的模式并輸出。5.3正則表達(dá)式例題5.4Copilot指令:5.3正則表達(dá)式任務(wù)1:創(chuàng)建一個(gè)字符串str,內(nèi)容為:"ThecodeisAB-123andXY-456isthesecretcode."。任務(wù)2:使用正則表達(dá)式找出所有形如"XX-YYY"(其中X和Y是字母,Y是數(shù)字)的模式,并將它們存儲(chǔ)在一個(gè)新的字符串?dāng)?shù)組arr中。任務(wù)3:使用Pattern和Matcher類進(jìn)行正則匹配,找出所有符合要求的模式并輸出。請(qǐng)編寫一個(gè)程序來(lái)完成以上任務(wù)。例題5.45.3正則表達(dá)式importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassTest{

publicstaticvoidmain(String[]args){

//Task1

Stringstr="ThecodeisAB-123andXY-456isthesecretcode.";

//Task2

String[]arr=findPatterns(str

溫馨提示

  • 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ù)覽,若沒有圖紙預(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)論