一:String类用于不变的字符串;StringBuilding用于可变的字符串;StringBuffer现主要用于并发计算的环境,有同步的功能,但比StringBuilder速度慢。JAVA用类(String)来封装字符串,编程人员不用担心越界问题。
Java用String类存放字符串常量,不能修改,可以作为参数传递,也可以被多个并发执行的线程所共享。
如果字符串要变动,则采用StringBuilder类来操作。该类相当于有个字符缓冲区,用所提供的方法修改串中的字符。若修改后不会再变,可用toString方法转化为String类,因为String类较简单,容易操作。
二:String类
(1)创建String类对象可用串字面量 String s ="Good moring"; 与String s=new String("Good moring");等价。
可以用数组作参数,但注意不要改变数组内容,例如:String s=new String(char value[ ]);
(2)String类有许多方法,可以访问字符串,常用的有如下方法:
public int length() 用于返回串中的字符数,例如:int len=s.length();
public char charAt(int index)该方法用于返回参数中指定的串中位置的字符,例如: char ch=s.charAt(2);
public int indexOf(String str)该方法用于返回串中首次出现的str串的位置,返回-1表示串中无此str串。例如:int ind=s.indexOf('.');
public String substring(int beginlndex,int endlndex)该方法返回起始位置和末尾位置间的字符串。例如:
String sub=s.substring(0,4);
三StringBuilder类
(1)StringBuilder类对象是可以修改的字符串,它除了有长度方法length()外,还有容量方法capacity().创建 StringBuilder类对象格式如下:
StringBuilder strb=new StringBuilder(); //建立空的StringBuilder对象,缓冲 区初始容量是16字符单元。
可以带整形参数,即指定缓冲区大小,例如:StringBuilder strb=new StringBuilder(int initCapacity);以后加入字符时缓冲区会自动扩展。
还可以用字符串做参数,例如: StringBuilder sb=new StringBuilder("Good moring");
(2)StringBuilder 类有许多方法,用于修改字符串,常用有如下几个方法:
StringBuilder append(type variable)该方法追加数据到StringBuilder 的尾端,数据类型可以是object、int、long、float、double、boolean、char[],它们都被转换为字符串。该方法如下:
while((ch=System.in.read())!='\n')
strb.append(ch); //strb 是StringBuilder 类的对象。
StringBuilder insert(int offset type variable)该方法把数据插入到StringBuilder 的指定位置上,数据类型同上。例如: StringBuilder strb=new StringBuilder("A book");
strb.insert(2,"good"); //结果为A good book
注意位置从0开始,若要插入字符到串的前端,则位置参数为0.
StringBuilder setCharAt(int offset,char ch)该方法将指定位置的字符改为指定字符。用法示例:
strb.setCharAt(2,‘B’);//将strb中第三个字符改为B。
综合实例:将source字符串中所有字符反向放入dest字符缓冲区,最后把dest转化为字符串返回。
class ReverseStr {
public static String reversetIt(String source) {
int i,len=source.length();
StringBuilder dest = new StringBuilder(len);
for(i=(len-1);i>=0;i--){
dest.append(source.charAt(i));
}
return dest.toString();
}
}
class Myrever{
public static void main(String[] args) {
System.out.println("abcdefgh is reversed to:"+ReverseStr.reversetIt("abcdefgh"));
}
}
运行结果:abcdefgh is reversed to:hgfedcba