7 字符串處理
單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,第七講:字符串處理,主要內(nèi)容,String,類,StringBuffer,類,equals,方法,String,對(duì)象的生成,String,類代表,不可變,的字符序列,生成,String,對(duì)象有以下兩種方式:,字面量,String,,如,String s = "hello",String,構(gòu)造函數(shù):,String,類支持幾種構(gòu)造函數(shù),如,:,String s1=new,String("hello,");,String,對(duì)象的生成,兩種生成方式的區(qū)別:,只要字符串的值相等,字面量,String,的引用都是指向同一塊內(nèi)存;每當(dāng)用,new,實(shí)例化一次,將開(kāi)辟一塊屬于新的內(nèi)存空間,。,【,例題,】,String s = "hello",String s1 = new,String("hello,");,String s2 = "hello",String s3 = new,String("hello,");,System.out.println(s,= s2);,/true,System.out.println(s1 = s3);,/false,String,對(duì)象的比較,s1=s2,:用于比較兩個(gè)字符串的引用,s1,和,s2,是否指向同一塊內(nèi)存區(qū)域,s1.equals(s2),:用于比較字符串,s1,的內(nèi)容是否等于,s2,的內(nèi)容。,String,對(duì)象的連接,使用,”,+”,連接,String,字符串,將開(kāi)辟新的內(nèi)存空間。,【,例題,】,String s = "hello",String s1 = "world",String s2 = s;,s = s + s1;,System.out.println(s,);,/*,輸出結(jié)果為,helloworld,,,但此時(shí),s,引用的內(nèi)存區(qū)域,不再是之前的,s,引用的內(nèi)存區(qū)域 *,/,System.out.println(s,= s2);,/,結(jié)果為,false,String,類常用方法,建議大家通過(guò)閱讀,API,文檔,,了解,String,類的常用方法。,方法,功能,int,indexOf(String,s,int,fromIndex,),從,formIndex,位置開(kāi)始往后查找字符串中的子串的首次出現(xiàn)位置。,char,charAt(int,index),從串中獲取指定位置的字符,String,substring(int,begin,int,end),根據(jù)始末位置從串中獲取子串,String,split(String,regex,),按照分隔符將串分成若干子串,String,replace(char,ch1,char ch2),將字符串中所有,ch1,字符換為,ch2,String,類常用方法,方法,功能,boolean,equals(Object,obj,),當(dāng)前串與參數(shù)串比較是否相等,boolean,equalsIgnoreCase(String,s2),比較兩個(gè)字符串,不計(jì)較字母的大小寫(xiě),int,length(),求字符串長(zhǎng)度,String trim(),去除前導(dǎo)空格和尾部空格,int,indexOf(int,ch,int,fromIndex,),從,formIndex,位置開(kāi)始往后查找字符串中的字符,ch,的首次出現(xiàn)位置。,String,類常用方法,【,例題,】,通過(guò)下面代碼,熟悉,String,的常用方法。,String,類常用方法,【,例題,】,編寫(xiě)一段程序,返回一個(gè),int,型二維數(shù)組。數(shù)組中的元素通過(guò)解析一個(gè)形如“,1,2,3; 4,5,6,7;8,9,10,11,12”,的字符串參數(shù)獲得。,String,類常用方法,【,例題,】,四位同學(xué)中有一位做了好事,班長(zhǎng)問(wèn)是誰(shuí)做了好事。,A,回答:不是我。,B,回答:是,C,。,C,回答:是,D,。,D,回答:,C,瞎說(shuō)。已知三位同學(xué)說(shuō)的是真話,一位同學(xué)說(shuō)的是假話。請(qǐng)編寫(xiě)程序,找出做了好事的同學(xué)。,StringBuffer,對(duì)象的生成,StringBuffer,類代表,可變,的字符序列,不能使用字面常量對(duì),StringBuffer,對(duì)象進(jìn)行賦值,使用,StringBuffer,構(gòu)造函數(shù),StringBuffer,( ),:默認(rèn)構(gòu)造函數(shù)的構(gòu)造函數(shù)。預(yù)留了,16,個(gè)字符的空間。,StringBuffer(int,size),:接收一個(gè)整數(shù)參數(shù),設(shè)置緩沖區(qū)的大小,StringBuffer(String,str,),:接收一個(gè)字符串(,String,)參數(shù),設(shè)置,StringBuffer,對(duì)象的初始內(nèi)容,同時(shí)多,預(yù)留了,16,個(gè)字符,的空間。,StringBuffer,對(duì)象的比較,StringBuffer,類沒(méi)有對(duì),equals(),方法進(jìn)行重寫(xiě),在對(duì),StringBuffer,對(duì)象進(jìn)行內(nèi)容的比較之前,需將,StringBuffer,對(duì)象轉(zhuǎn)換為,String,對(duì)象。,【,例題,】,StringBuffer,sb1 = new,StringBuffer(“hello,");,StringBuffer sb2 = new,StringBuffer(“hello,");,System.out.println(sb1.equals(sb2);,/,結(jié)果為,false,System.out.println(sb1.toString().equals(sb2.toString();,/*,結(jié)果為,true,。使用,toString,(),方法,將,StringBuffer,對(duì)象轉(zhuǎn)換為,String,對(duì)象,*,/,StringBuffer,對(duì)象的連接,不能使用,“,+,”,連接,StringBuffer,對(duì)象。,使用,append(),方法連接,StringBuffer,對(duì)象。,StringBuffer,sb1 = new,StringBuffer("hello,");,StringBuffer sb2 = new,StringBuffer("world,");,StringBuffer sb3 = sb1;,System.out.println(sb1 = sb3); /,結(jié)果為,true,sb1 = sb1.append(sb2);,System.out.println(sb1 = sb3);,/*,結(jié)果為,true,。說(shuō)明使用,append(),方法并沒(méi)有開(kāi)辟新的內(nèi)存空間。,*,/,equals,方法,Object,類中,equals,方法的定義:當(dāng)引用變量,x,和,y,指向同一個(gè)對(duì)象時(shí),返回,true,;否則,false,。,可以根據(jù)需要在用戶自定義類型中重寫(xiě),equals,方法。,String,類重寫(xiě)了,equals,方法,:當(dāng)字符串變量,x,和,y,指向?qū)ο蟮膬?nèi)容相等時(shí),返回,true,;否則,false,。,StringBuffer,類沒(méi)有重寫(xiě),equals,方法,equals,的重寫(xiě),【,例題,】,重寫(xiě),equals(),方法,比較兩個(gè),Rectangle,對(duì)象,是否相等。,