1、Java语言中的包java.lang中封装了String和StringBuffer类。l类String对象是字符串常量,建立后不能改变。l类StringBuffer对象类似于一个字符缓冲区,建立后可以修改。1、类String字符串的定义可以用字符串常量直接初始化一个String对象。例如:String s=Hello World.;说明:一个字符串常量可以直接调用类String中提供的方法。类类StringString字符串字符串例如:int len=Hello World!.length();通过类String提供的构造方法,可以生成一个空字符串,例如:String s=new String
2、();其他创建String对象的构造方法有:lString(String value)如:s=new String(Hello!);。lString(char chars)如:Char charArray=程,序,设,计;s=new String(charArray);lString(char chars,int startIndex,int numChars)如:s=new String(charArray,2,2);【例1】类String构造方法的使用。public class StringConstructors public static void main(String args)S
3、tring s,s1,s2,s3,s4,s5,s6,s7;Char charArray=程,序,设,计;StringBuffer stingb=new StringBuffer(欢迎);s=new String(Hello!);s1=new String();s2=new String(s);s3=new String(stingb);s4=new String(charArray,2,2);s5=new String(charArray);System.out.println(s =+s);System.out.println(s1=+s1);System.out.println(s2=+s
4、2);System.out.println(s3=+s3);System.out.println(s4=+s4);System.out.println(s5=+s5);程序运行结果为:s =Hello!s1=s2=Hello!s3=欢迎s4=设计s5=程序设计2、类String 的常用方法大体上可分为类转换、子字符串、比较、修改等几类。(1)类String字符串的比较lboolean equals(Object anObject)和equalsIgnoreCase(String anotherString);比较两个字符串的值是否相等,不同的是后者忽略字母的大小写。System.out.pri
5、ntln(abc.equals(abc);System.out.println(abc.equalsIgnoreCase(ABC);注意:String s=new String(abc“);String s1=new String(“abc“);/s,s1是两个不同的对象 System.out.println(s=s1);/输出为 false,是否引用同一个实例对象 System.out.println(“abc”=“abc”);/输出为 true,对应每个字符是否相同lint compareTo(String anotherString)若调用的串对象比参数大,返回正整数。反之返回负整数。相
6、等返回0。例如:例如:System.out.println(“this”.compareTo(“that”);/1 System.out.println(pareTo(abcd);/1lint compareToIgnoreCase(String str)是与上述方法功能相同的方法,但忽略字母大小写。lboolean startWith(String prefix ,int offset)和lboolean endWith(String suffix,int offset)功能:方法startWith()和endWith()用来比较当前字符串的起始字符(或子字符串)prefix和终止字符(或子
7、字符串)suffix是否和调用的字符(或字符串)相同,重载的方法中同时还可以指定比较的开始位置offset。lboolean regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len)功能:regionMatches方法的功能是比较两个字符串中指定区域的子字符串是否相同。而ignoreCase指明比较时是否区分大小写。无此参数,比较是区分大小写的(2)类String子字符串和定位lchar charAt(int index)该方法的功能是返回字符串index处的字符,index的值从0到串长度减1
8、。例如:System.out.println(China.charAt(1);/输出为hlint indexOf(int ch)和lastIndexOf(int ch)方法indexOf()有重载:indexOf(int ch,int fromIndex)int indexOf(String str)int indexOf(String str,int fromIndex)以上方法的功能是返回字符串对象中指定的字符和子串首次出现的位置,从串对象开始处或从fromIndex处开始查找。若未找到则返回-1。方法lastIndexOf()也有重载:int lastIndexOf(int ch,int
9、 fromIndex)Int lastIndexOf(String str)int lastIndexOf(String str,int fromIndex)这几个方法与相应的indexOf方法相比,不同之处是从串对象的右端开始查找。lString substring(int beginindex)和substring(int beginindex,int endindex)方法的功能是返回子字符串。前者返回从位置beginindex开始处到串尾的子字符串;后者是返回从beginindex开始到endindex-1为止的子字符串,子串长度为endindex-beginindex。【例2】las
10、tIndexOf的使用。class LastNumber public static void main(String args)String s1=67.89,55.87,-56.45,11.22,78.9;int i1=s1.lastIndexOf(,);String s2=s1.substring(i1+1);System.out.println(s2);程序运行结果为:78.9【例3】类String方法indexOf和substring的使用。class DollarAmount public static void main(String args)String s1=这块显示卡的售
11、价为$45.60;int i1=s1.indexOf($);String s2=s1.substring(i1);System.out.println(s2);程序运行结果为:$45.60 【例4】显示一周星期日至星期六的名称。class WeekName public static void main(String args)String xq=日一二三四五六,s;int i;for(i=0;i7;i+)s=xq.substring(i,i+1);System.out.print(星期+s);System.out.println();程序运行结果为:星期日 星期一 星期二 星期三 星期四 星
12、期五 星期六(3)String字符串对象的修改 将修改后的字符串对象赋给新的对象或直接输出。lString toLowerCase()和String toUpperCase()功能:分别将字符串中的字母转换为小写和大写。例如:System.out.println(abcde.toUpperCase();System.out.println(ABCDE.toLowerCase();lreplace(char oldChar,char newChar)该方法的功能是将字符串中oldChar字符用newChar字符替换。例如:System.out.println(41177.replace(7,8)
13、;/输出为 41188l(3)String trim()功能:截去字符串两端的空白字符(whitespace,不大于u0020的字符)。例如:String s=Java ;String s1=他10岁。;System.out.println(s.trim()+s1);/输出为:Java他10岁。/Java前后的空格字符被截去(4)类String与其他类的转换lstatic String valueOf(Object obj)该方法的功能是将其他类的参数转换为字符串对象返回。为了方便起见,类String中提供了重载的静态方法valueOf(),用来把其他类型的对象转换为字符串对象。重载方法有:s
14、tatic String valueOf(char data)static String valueOf(char data,int offset,int count)static String valueOf(boolean b)static String valueOf(char c)static String valueOf(int i)static String valueOf(long l)static String valueOf(int i)static String valueOf(long l)static String valueOf(float f)static Stri
15、ng valueOf(double d)例如:System.out.println(String.valueOf(Math.PI);注:其他类也提供了方法valueOf()把一个字符串转换为相应的类对象。例如:String piStr=3.14159;Float pi=Float.valueOf(piStr);/String对象转换为对象转换为Float对象对象ltoString()把对象转换为字符串,方法static String toString(int i,int radix)用来将整数i转换为radix进制的数字字符串。例如:String s=Integer.toString(123,
16、8);/将十进制的将十进制的123转换为八进制数据转换为八进制数据 System.out.println(s);/输出为输出为 173在实际应用中,也经常需要将字符串转换为其他类型的数据。例如:String s=125;Integer obj=Integer.valueOf(s);int i=obj.intValue();/上两行也可合写为:上两行也可合写为:/int i=Integer.valueOf(s).intValue();(5)类String的其他方法lint length()方法length()的功能为返回类String字符串对象的长度。【例5】求几个给定字符串的平均长度。clas
17、s StringAverage public static void main(String args)String array=new String3;array0=Short string;array1=This is a complete sentence!;array2=This is the longest +element in the array;int total=array0.length();total+=array1.length();total+=array2.length();System.out.println(平均字符串长度为:平均字符串长度为:+total/3)
18、;程序运行结果如下:平均字符串长度为:平均字符串长度为:26 26 lString concat(String str)功能是将str连接到调用串对象的后面,即进行字符串的连接操作。例如:System.out.println(41177.concat(abc);/41177abc在Java语言中,重载的运算符“+”也可用来实现字符串的连接或字符串与其他类对象的连接。例如:String s=“Java”+“程序设计程序设计”;/s=Java程序设计程序设计 int age=20;String s1=他他+age+岁。岁。;/s1=他他20岁。岁。l(3)String split(String s
19、tr)将str作为分隔符进行字符串分解。【例6】用split方法对一个逗号分隔的数字字符串中的各个数字求和。class SplitDemopublic static void main(String args)String s=34,55,78,12,90,81,63,84;/逗号分隔的数字字符串String sa=s.split(,);/给定逗号分隔符分解串后存入数组saint ia=new int sa.length,sum=0;for(int i=0;isa.length;i+)iai=Integer.parseInt(sai);sum+=iai;System.out.println(S
20、um=+sum);程序运行结果如下:Sum=497Sum=4971 类StringBuffer字符串的定义可以改变(如增长、修改)的字符串对象。类StringBuffer提供了构造方法:StringBuffer()建立空的字符串对象。StringBuffer(int len)建立长度为len的字符串对象。StringBuffer(String s)建立一个初值为String类对象s的字符串对象。类类StringBufferStringBuffer字符串字符串例如:StringBuffer StrB1=new StringBuffer();StringBuffer StrB2=new Strin
21、gBuffer(30);StringBuffer StrB3=new StringBuffer(StringBuffer);说明:l若不给任何参数,则系统为字符串分配16个字符大小的缓冲区。l参数len则指明字符串缓冲区的初始长度。l参数s给出字符串的初始值,同时系统还要再为该串分配16个字符大小的空间。长度length和容量capacity,前者是类StringBuffer对象中包含字符的数目,而后者是缓冲区空间的大小。例如:对上述初始化的StrB3,它的length为12(StringBuffer的长度),但它的capacity为28。2 类StringBuffer 的常用方法(1)设置/
22、获取类StringBuffer字符串对象长度和容量lvoid ensureCapacity(int minimumCapacity)若当前缓冲区容量小于参数值,则分配新的较大的缓冲区。新容量取以下两者中的大者:参数参数minimumCapacity 的值。的值。老容量的两倍加老容量的两倍加2。例如:StringBuffer StrB=new StringBuffer(china);StrB.ensureCapacity(30);System.out.println(StrB.capacity();/输出为44 (老容量的两倍加2)lvoid setLength(int newLength)功能
23、:指明字符串的长度,这时字符串缓冲区中指定长度以后的字符值均为零。例如:StringBuffer StrB=new StringBuffer(china);StrB.setLength(3);/输出为输出为chil(3)int length()本方法的功能是获取字符串对象的长度。本方法的功能是获取字符串对象的长度。l(4)int capacity()本方法的功能是获取缓冲区的大小。本方法的功能是获取缓冲区的大小。【例7】StringBuffer字符串长度Length和容量Capacity意义的区别。class StringBufferDemo public static void main(S
24、tring args)StringBuffer StrB1=new StringBuffer();StringBuffer StrB2=new StringBuffer(30);StringBuffer StrB3=new StringBuffer(abcde);System.out.println(StrB1.capacity=+StrB1.capacity();System.out.println(StrB1.length=+StrB1.length();System.out.println(StrB2.capacity=+StrB2.capacity();System.out.print
25、ln(StrB2.length=+StrB2.length();System.out.println(StrB3.capacity=+StrB3.capacity();System.out.println(StrB3.length=+StrB3.length();程序运行结果为:StrB1.capacity=16StrB1.length=0StrB2.capacity=30StrB2.length=0StrB3.capacity=21StrB3.length=5 2.修改类StringBuffer字符串对象修改类StringBuffer对象的常用方法有append、insert、delete等
26、。l(1)StringBuffer append(Object obj)方法append()用于在串缓冲区的字符串末尾添加各种类型的数据。重载的方法如下:StringBuffer append(boolean b)StringBuffer append(int i)StringBuffer append(long l)StringBuffer append(float f)StringBuffer append(double d)【例8】StringBuffer字符串连接操作。class StringBufferAppend public static void main(String arg
27、s)tringBuffer StrB=new StringBuffer(abcde);StrB.append(fgh);StrB.append(ijklmnop);System.out.println(StrB);System.out.println(StrB.capacity=+StrB.capacity();System.out.println(StrB.length=+StrB.length();程序运行结果如下:abcdefghijklmnopStrB.capacity=21StrB.length=16lStringBuffer insert()方法insert()用于在串缓冲区的指定
28、位置offset处插入各种类型的数据。重载的方法有:StringBuffer insert(int offset,int i)StringBuffer insert(int offset,long l)StringBuffer insert(int offset,float f)StringBuffer insert(int offset,double d)【例9】StringBuffer字符串插入操作。class StringBufferInsert public static void main(String args)StringBuffer StrB=new StringBuffer(
29、abcde);StrB.insert(0,012345);System.out.println(StrB);/程序运行结果如下:012345abcdel(3)StringBuffer delete(int start,int end)和 deleteCharAt(int index)用来从StringBuffer字符串对象中删去从start开始到end-1结束的子字符串。例如:StringBuffer StrB=new StringBuffer(aabbcc);System.out.println(StrB.delete(2,4);/输出为aacc方法deleteCharAt()用来删除ind
30、ex处的字符。例如:StringBuffer StrB=new StringBuffer(china);System.out.println(StrB.deleteCharAt(4);/输出为chinl(4)StringBuffer reverse()方法reverse()用于对StringBuffer类字符串对象进行颠倒操作。设原字符串的长度为n,新字符串中k位置的字符在原字符串中的位置为n-k-1。【例10】对StringBuffer字符串进行颠倒操作。class StringBufferReverse public static void main(String args)StringB
31、uffer StrB1=new StringBuffer(abcde);StrB1.append(abcdefghij);StringBuffer StrB2=StrB1.reverse();System.out.println(StrB1);System.out.println(StrB2);l(5)void setCharAt(int index,char ch)本方法的功能是设置指定位置index的字符值ch。例如:StringBuffer StrB=new StringBuffer(aaAaa);StrB.setCharAt(2,中);/StrB为aa中aa程序运行结果如下:jihgf
32、edcbaedcbajihgfedcbaedcbalStringBuffer replace(int start,int end,String str)将StringBuffer对象字符串从start至end-1处,用字符串str替换。例如:StringBuffer StrB=new StringBuffer(*);System.out.println(StrB.replace(2,6,Java);3.类StringBuffer对象的子字符串和字符lvoid getChars(int srcBegin,int srcEnd,char dst,int dstBegin)将StringBuffer
33、对象字符串中字符复制到目标字符数组中去。复制的字符从srcBegin处开始,到srcEnd-1处结束.复制字符的个数为srcEnd-srcBegin。字符被复制到目标数组的dstBegin至 dstBegin+(srcEnd-srcBegin)1处。例如:char a=*,*,*,*,*,*,*,*;StringBuffer StrB=new StringBuffer(Java);StrB.getChars(0,4,a,2);System.out.println(a);/输出为*Java*l(2)String substring(int start)方法的功能是获取StringBuffer字符
34、串对象从start处开始的子串。重载的方法String substring(int start,int end)用来获取StringBuffer字符串对象从start至end-1处之间的子串。例如:StringBuffer StrB=new StringBuffer(Java Programming);System.out.println(StrB.substring(5);System.out.println(StrB.substring(0,4);/输出为 Java4.类型转换l(1)String toString()将指定对象转换为字符串,与类Character、Integer、Boolean等一样,类StringBuffer也重写了方法toString(),可将类StringBuffer的对象转换成类String的对象。例如:StringBuffer StrB=new StringBuffer(aabbcc);String s=StrB.toString();System.out.println(s);/输出为aabbcc