更新韶光:2020年01月08日16时37分 来源:叩丁狼学院 浏览次数:
由于字符串是常量,因此一旦创建,其内容和长度是不可改变的。如果须要对一个字符串进行修正,则只能创建新的字符串。为了便于对字符串的修正,在JDK中供应了个StringBuffer类(也称字符串缓冲区)。StringBuffer类和String类最大的差异在于它的内容和长度都是可以改变的。StringBuffer类似一个字符容器,当在个中添加或删除字符时,并不会产生新的StringBuffer工具。针对添加和删除字符的操作,StringBuffer类供应了一系列的方法。
上面表中列出了StringBuffer的一系列常用方法,接下来通过一个案例来学习一下表中方法的详细利用。

public class stringbuffer01{
public static void main(String[] args) {
System.out.println( 1、添加----------
add();
System.out.println( 2、删除----------
remove();
System.out.println( 3、修正---------
alter();
}
public static void add(){
StringBuffer sb=new StringBuffer(); //定义一个字符缓冲区
sb.append( abcdefg
System.out.println( append添加结果: +sb);
sb.insert(2, 123 //在指定位置插入字符串
System.out.println( insert添加结果: +sb);
}
public static void remove() {
StringBuffer sb=new StringBuffer( abcdefg
sb.delete(1,5); //指定例模删除
System.out.println( 删除指定位置的结果: +sb);
sb.deleteCharAt(2); //指定位置删除
System.out.println( 指定删除位置结果: +sb);
sb.delete(0,sb.length()); //打消缓冲区
System.out.println( 清空缓冲区结果: +sb);
}
public static void alter() {
StringBuffer sb=new StringBuffer( abcdef
sb.setCharAt(1, p //修正指定未知字符
System.out.println( 修正指定位置字符结果: +sb);
sb.replace(1, 3, qq
System.out.println( 更换指定未知字符(串)结果: +sb);
System.out.println( 字符串反转结果: +sb.reverse());
}
}
运行结果如下图:
上面案例中涉及到StringBuffer类的很多方法,个中append()和insert(方法是最常用的,并且这两个方法有很多重载形式,它们都用于添加字符。不同的是,append()方法始终将这些字符添加到缓冲区的末端,而insert()方法则可以在指定的位置添加字符其余,例程中的delete()方法用于删除指定位置的字符,setCharAt()和replace()方法用于更换指定位置的字符,这几个方法都非常大略,在此就不再赘述了。
StringBuffer类和String类有很多相似之处,初学者在利用时很随意马虎稠浊。接下来针对这两个类进行比拟,大略归纳一下两者的不同,详细如下:
1、String类表示的字符串是常量,一旦创建后,内容和长度都是无法改变的。而StringBuffer表示字符容器,其内容和长度都可以随时修正。在操作字符串时,如果该字符串仅用于表示数据类型,则利用 String类即可,但是如果须要对字符串中的字符进行增删操作,则利用 StringBuffer类。
2、String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法,详细示例如下
String s1=new String( abc
String s2=new String( abd
System.out.println(s1.equals(s2)); //打印结果为true
StringBuffer sb1=new StingBuffer( abc
StringBuffer sb2=new StringBuffer( abc
System.out.println(sb1.equeals(sb2)); //打印结果为false
String类工具可以用操作符+进行连接,而 String Buffer类工具之间不能,具体例如下:
String s1= a
String s2= b
String s3=s1+s2; //合法
System.out.println(s3); //打印输出ab
StringBuffer sb1=new StringBuffer( a
StringBuffer sb2=new StringBuffer( b
StringBuffer sb3=sb1+sb2; //编译出错