![java課件-02類庫2字符串處理_第1頁](http://file4.renrendoc.com/view/da106d70b509eed59adcfd79d43047c4/da106d70b509eed59adcfd79d43047c41.gif)
![java課件-02類庫2字符串處理_第2頁](http://file4.renrendoc.com/view/da106d70b509eed59adcfd79d43047c4/da106d70b509eed59adcfd79d43047c42.gif)
![java課件-02類庫2字符串處理_第3頁](http://file4.renrendoc.com/view/da106d70b509eed59adcfd79d43047c4/da106d70b509eed59adcfd79d43047c43.gif)
![java課件-02類庫2字符串處理_第4頁](http://file4.renrendoc.com/view/da106d70b509eed59adcfd79d43047c4/da106d70b509eed59adcfd79d43047c44.gif)
![java課件-02類庫2字符串處理_第5頁](http://file4.renrendoc.com/view/da106d70b509eed59adcfd79d43047c4/da106d70b509eed59adcfd79d43047c45.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
JDK類庫字符串處理上一章回顧Object類2本章節(jié)授課目標String類StringBuffer類StringBuilder類3String類4String類概述Java中的String類用于處理字符串常量。String類位于java.lang包,屬于final類型修飾符。String類使用utf-16編碼格式存儲字符串數(shù)據(jù)。5String類構(gòu)造方法String()構(gòu)造一個指向空字符串(“”)的空字符串。因String指向的數(shù)據(jù)不可變,因此很少需要使用無參數(shù)構(gòu)造函數(shù)。String(byte[]bytes)根據(jù)傳入的字節(jié)數(shù)組構(gòu)造一個字符串對象。String(char[]value)使用一個字符數(shù)組構(gòu)造一個新的字符串對象。byte[]bytes={97,98,99};Strings=newString(bytes);System.out.println(s);輸出abcchar[]chrs={'a','中','文','s','t','r','i','n','g'};Strings=newString(chrs);6String類構(gòu)造方法String(Stringstr)根據(jù)傳入的構(gòu)造函數(shù)參數(shù)字符串創(chuàng)建出來一個新的字符串對象。String(StringBufferbuffer)根據(jù)一個StringBuffer類實例構(gòu)造一個新的字符串對象。String(StringBuilderbuilder)根據(jù)一個StringBuilder類實例構(gòu)造一個新的字符串對象。Stringsource="唐山啟奧實訓(xùn)";Stringtarget=newString(source);System.out.println(source==target);輸出false7字符串常量除了使用構(gòu)造方法創(chuàng)造新的字符串對象以外,還可以使用字符串常量構(gòu)造新的字符串對象。示例:Stringsource="唐山啟奧實訓(xùn)“;8字符串常量字符串常量與編譯器優(yōu)化StringA=“啟奧實訓(xùn)“;StringB=“啟奧實訓(xùn)“;StringC=“ABC“;System.out.println(A==B);內(nèi)存變量true9下面的代碼輸出什么?StringA="啟奧實訓(xùn)";StringB=A;A="aaa";System.out.println(B);String是引用類型String值是常量10字符串常量與String構(gòu)造函數(shù)StringA="啟奧實訓(xùn)";StringB="啟奧實訓(xùn)";StringD=newString(A);System.out.println(A==D);false內(nèi)存11valueOf方法通過其它數(shù)據(jù)創(chuàng)造String類實例:String包含大量的重載的valueOf方法用來構(gòu)造新的字符串實例數(shù)據(jù)valueOf(boolean)valueOf(char)valueOf(int)valueOf(long)valueOf(float)valueOf(double)示例:Strings=String.valueOf(100);System.out.println(s);12length()方法取字符串長度length()方法可以通過調(diào)用length()方法取得字符串長度值。示例:Strings=“TESTSTRING";System.out.println(s.length());13isEmpty方法判斷字符串是否包含數(shù)據(jù)isEmpty()方法isEmpty()方法用于判斷字符串是否含有字符數(shù)據(jù),注意什么都不含有是相當于有一個0長度的字符串,不是null狀態(tài)。示例:Strings="";System.out.println(s.isEmpty());System.out.println(null==s);falsetrue14isEmptyisEmpty的另外一個示例:結(jié)果15charAt(x)方法返回字符串中某一個位置的字符數(shù)據(jù)charAt(intindex)charAt用于返回字符串中某一位置的字符數(shù)據(jù),如果字符串中不包含傳入的位置對應(yīng)的字符數(shù)據(jù),會拋出異常。示例:Strings="1234";System.out.println(s.charAt(2));System.out.println(s.charAt(4));3報錯第一個元素是從0開始的16getBytes()方法可以使用getBytes()方法將字符串中的數(shù)據(jù)轉(zhuǎn)成字節(jié)數(shù)組使用,例如用來保存到硬盤中或通過網(wǎng)絡(luò)傳遞等。getBytes()按照JVM平臺缺省的字符集去做字符串到字節(jié)數(shù)組的轉(zhuǎn)換。getBytes(字符集)按照指定的的字符集去做字符串到字節(jié)數(shù)組的轉(zhuǎn)換。示例:Strings="將會寫到硬盤的字符串數(shù)據(jù).";byte[]bytes=s.getBytes();java.io.FileOutputStreamfos=newFileOutputStream(newFile("d://test.txt"));fos.write(bytes);fos.close();17getBytes()方法getBytes與字符集的關(guān)系缺省平臺字符集編碼格式時Iso-8859-1字符集編碼格式時18equals如何判斷兩個字符串內(nèi)容是否完全相同?equals方法可以判斷兩個字符串對象的等同性,即包含的字符串內(nèi)容值是否相同。equals方法判斷的過程是區(qū)分大小寫的。示例:Strings1="abc";Strings2="Abc";Strings3="abc";System.out.println(s1.equals(s2));System.out.println(s1.equals(s3));輸出false輸出true19equalsIgnoreCase如何不區(qū)分大小寫的判斷兩個字符串內(nèi)容是否相同?equalsIgnoreCase方法用于忽略大小寫去判斷兩個字符串是否具有等同性,即忽略大小寫的情況是否相同。示例:Strings1="abc";Strings2="Abc";System.out.println(s1.equals(s2));System.out.println(s1.equalsIgnoreCase(s2));輸出false輸出true20startsWith判斷字符串是否以某一字符串開始startsWith用于判斷字符串的啟始內(nèi)容是否以某一字符串開始的,是的話返回true,否則返回false。示例:Strings1="歡迎來到河北唐山啟奧實訓(xùn)基地";System.out.println(s1.startsWith("歡迎"));21endsWith判斷某一字符串是否以某一個字符串結(jié)尾的endsWith判斷字符串是否以某一個字符串結(jié)束,如果是返回true,否則返回false。示例:Strings1="歡迎來到河北唐山啟奧實訓(xùn)基地";System.out.println(s1.endsWith("基地"));22indexOf返回某一個字符子串的首次出現(xiàn)位置indexOf在字符串中查找第一次出現(xiàn)子串的位置,如果找不到返回-1示例:Strings1="歡迎來到河北唐山啟奧實訓(xùn)基地";System.out.println(s1.indexOf("啟奧"));System.out.println(s1.indexOf("啟奧科技"));輸出8第一個元素是從0開始的輸出-123lastIndexOf返回最后一次出現(xiàn)某一個字符子串的位置lastIndexOf返回在字符串中最后一次出現(xiàn)某一個子串的位置,如果沒有出現(xiàn)過子串返回-1。示例:Strings1="歡迎啟奧學(xué)生來到河北唐山啟奧實訓(xùn)基地";System.out.println(s1.indexOf("啟奧"));System.out.println(s1.lastIndexOf("啟奧"));System.out.println(s1.lastIndexOf("啟奧科技"));輸出2輸出12輸出-124substring(int)截取字符串內(nèi)容substring(intbeginIndex)用于從某一起始位置截取到末尾的字符串內(nèi)容,如果傳入的起始位置非法會報錯。示例:Strings1="歡迎來到河北唐山啟奧實訓(xùn)基地";System.out.println(s1.substring(4));System.out.println(s1.substring(20));輸出:河北唐山啟奧實訓(xùn)基地報錯25substring截取部分字符串substring(intbeginIndex,intendIndex)用于截取知道起始位置到指定結(jié)束位置的字符串,如果給定的位置無效則報錯。示例:Strings1="歡迎來到河北唐山啟奧實訓(xùn)基地";System.out.println(s1.substring(8,10));System.out.println(s1.substring(0,100));啟奧報錯26concat連接兩個字符串concat用于連接兩個字符串后形成一個新的字符串。示例:Strings1="歡迎來到";Strings2="啟奧實訓(xùn)基地";Strings3=s1.concat(s2);System.out.println(s3);更多的情況是使用+來拼接出一個新的字符串出來。27split字符串分割String[]split(Stringregex)用于按照regex指定的分隔符分割字符串到一個數(shù)組中,即把一個很長的字符串按照指定的分隔符拆分到不同的短小字符串組成的數(shù)組中。示例:Strings1="a,b,c";String[]sArrays=s1.split(",");for(Strings:sArrays){System.out.println(s);}Strings1="a#b#c";String[]sArrays=s1.split("#");for(Strings:sArrays){System.out.println(s);}28大小寫轉(zhuǎn)換大小寫轉(zhuǎn)換toLowerCase將字符串轉(zhuǎn)換為小寫形式。toUpperCase將字符串轉(zhuǎn)換為大寫形式。示例:Strings1="aBcDef";Strings2=s1.toLowerCase();Strings3=s1.toUpperCase();System.out.println(s2);System.out.println(s3);abcdefABCDEF29去空格去空格trim()去除字符串兩端的空格,返回去空格以后的結(jié)果字符串。示例:Strings1="abc";Strings2=s1.trim();System.out.println(s2);輸出:abc,注意字符間有空格30字符串內(nèi)容替換部分字符串內(nèi)容替換replaceFirst(Stringregex,Stringreplacement)按照regex提供的正則表達式值,替換第一次出現(xiàn)的匹配內(nèi)容變成replacement值。示例:Strings1="abcb";Strings2=s1.replaceFirst("b","e");System.out.println(s2);輸出:aecb31replaceAll替換所有匹配的字符串內(nèi)容到某一字符串replaceAll(Stringregex,Stringreplacement)根據(jù)regex的正則表達式去匹配字符串內(nèi)容,把所有匹配的內(nèi)容替換為replacement的值。示例:Strings1="abc,abcd,abcde";Strings2=s1.replaceAll("bc","gg");System.out.println(s2);32正則表達式正則表達式涉及的知識點太多,這里不展開進行講述,請同學(xué)們課余時間自己了解與正則表達式相關(guān)的知識。33字符串轉(zhuǎn)換34其它數(shù)據(jù)類型轉(zhuǎn)為字符串類型一般是通過toString()方法實現(xiàn)。示例:IntegerI=newInteger(100);Stringstr=I.toString();java.util.Dated=newDate();System.out.println(d.toLocaleString());如果有額外的向字符串類型轉(zhuǎn)換的方法,也都接近于toString35StringBuffer與StringBuilder類36String類是用來處理字符串常量的,即String對象所處理的是不可改變的字符串常量,如果需要處理變長的字符串操作,可以使用如下兩個類:StringBufferStringBuilder各種操作字符串的類特性比較表格名稱類型執(zhí)行速度線程安全適用場合String字符串常量慢-少量字符串StringBuffer字符串變量快安全大量串,多線程StringBuilder字符串變量最快不安全大量串,單線程37StringBuffer使用StringBuffer類常用方法介紹StringBuffer()按照默認初始緩沖大小創(chuàng)造一個新的實例,缺省緩沖區(qū)大小為16,即在保存前16個字符時涉及不到重新的緩沖大小分配。StringBuffer(intcapacity)按照指定的大小設(shè)置初始緩沖區(qū)大小。StringBuffer(Stringstr)按照指定的字符串內(nèi)容構(gòu)造初始緩沖區(qū)內(nèi)容并預(yù)留16個字符的額外緩沖可用空間(為了提升操作效率)。38StringBuffer使用追加字符串內(nèi)容append(Stringstr)追加str內(nèi)容到緩沖區(qū)末尾。注意append()有多達13種重載形式,可以追加的數(shù)據(jù)類型有很多。示例:StringBuffersb=newStringBuffer(2);sb.append("天氣");sb.append("不錯");System.out.println(sb.toString());輸出:天氣不錯39StringBuffer使用插入字符串內(nèi)容insert()有12種重載的insert方法,基本形式都是在指定的位置插入待插入內(nèi)容。insert示例:StringBuffersb=newStringBuffer();sb.append("小明是個程序員");sb.insert(4,"好學(xué)的");System.out.println(sb.toString());輸出:小明是個好學(xué)的程序員40StringBuffer使用修改字符串內(nèi)容replace(intstart,intend,Stringstr)替換字符串內(nèi)容,從start開始的位置,到end的位置結(jié)束,不替換end位置上的字符內(nèi)容。示例:StringBuffersb=newStringBuffer();sb.append("abcde");sb.replace(0,2,"@");System.out.println(sb.toString());輸出:@cde41獲取字符串內(nèi)容獲取StringBuffer中的字符串內(nèi)容toString()方法用于獲取StringBuffer中的字符串內(nèi)容。示例:StringBuffersb=newStringBuffer();sb.append("孩兒立志出鄉(xiāng)關(guān),學(xué)不成名誓不還");System.out.println(sb.toString());42線程安全線程安全與線程不安全示例:43publicclassShinowTestThreadextendsThread{//staticStringBuildersb=newStringBuilder();staticStringBuffersb=newStringBuffer();publicvoidrun(){while(true){sb.append("aa");sb.delete(0,sb.length());if(sb.length()>0){System.out.println("someinfo");}}}publicstaticvoidmain(String[]args){newShinowTestThread().start();newShinowTestThread().start();newShinowTestThread().start();newShin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 異地執(zhí)行申請書
- 變更強制措施的申請書
- 休年假申請書
- 大數(shù)據(jù)背景下醫(yī)院行政辦公檔案電子化管理探討
- 初中入學(xué)的申請書
- 大學(xué)生創(chuàng)業(yè)項目老年人app
- 護士簽合同申請書
- 19年大學(xué)生創(chuàng)業(yè)項目
- 藝術(shù)之門模板
- 創(chuàng)新之家居設(shè)計
- 小學(xué)二年級語文上冊閱讀理解專項訓(xùn)練20篇(含答案)
- 2024年中考語文名著閱讀知識(考點)專題10《水滸傳》真題精練(單一題)(解析版)
- 新能源電力市場與電力交易
- 《英國飲食文化》課件
- 視頻號運營規(guī)則
- 班規(guī)班約高一班規(guī)班約及考核細則
- 《幼兒文學(xué)》 課件全套 第1-8章 幼兒文學(xué)概述- 圖畫書
- 第15課 記憶小竅門(教學(xué)設(shè)計)-蘇教版心理健康四年級上冊
- 41篇小學(xué)三年級語文課外閱讀練習(xí)題及答案
- 馬克筆繪圖方法培訓(xùn)PPT課件(內(nèi)容詳細)
- 部編2023版道德與法治六年級下冊活動園問題及答案
評論
0/150
提交評論