JavaSE入门学习29:Java常用类之StringBuffer类和StringBuilder类

Posted life is wonderful

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaSE入门学习29:Java常用类之StringBuffer类和StringBuilder类相关的知识,希望对你有一定的参考价值。

       一StringBuilder类

       (1)认识StringBuilder类

       在Java中,除了可以使用String类来存储字符串,还可以使用StringBuilder类或 StringBuffer类存储字符串,在需

要频繁对字符串进行修改操作时使用StringBuilder的效率比String要高。

       String 类具有是不可变性。如:

技术分享

       运行结果:  

技术分享

       从运行结果中我们可以看到,程序运行时会额外创建一个对象,保存 "helloworld"。当频繁操作字符串时,就会额

外产生很多临时变量。使用StringBuilder或StringBuffer就可以避免这个问题。至于StringBuilder和StringBuffer,它们

基本相似,不同之处,StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。因此一

般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用StringBuilder 类

       定义和创建StringBuilder类的实例代码:

技术分享

       运行结果: imooc  

       (2)StringBuilder类的常用方法

       StringBuilder类提供了很多方法来操作字符串:

技术分享

       例如:在下面的示例代码中,创建了StringBuilder对象,用来存储字符串,并对其做了追加和插入操作。这些操

作修改了str对象的值,而没有创建新的对象,这就是StringBuilder和 String最大的区别。

       实例代码:

技术分享

       运行结果:

技术分享

       了解了StringBuilder类,我们来尝试完成下面的功能。

       功能:将一个由英文字母组成的字符串转换成指定格式---从右边开始每三个字母用逗号分隔的形式。

       实例代码:
public class Test {
    public static void main(String[] args) {
	//创建一个空的StringBuilder对象
	StringBuilder str=new StringBuilder();
		
	//追加字符串
	str.append("jaewkjldfxmopzdm");
		
        //从后往前每隔三位插入逗号
	for(int i=str.length()-3;i>0;i=i-3){
    	    str.insert(i,",");
	}
     
        //将StringBuilder对象转换为String对象并输出
	System.out.print(str.toString());
    }
}

       运行结果:

技术分享

       二StringBuffer类

       (1)认识StringBuffer类

       java.lang.StringBuffer代表可变的字符序列。StringBuffer和String类似,但StringBuffer可以对其字符串进行改

变。

       (2)StringBuffer类的常见构造方法:

       StringBuffer()

       创建一个不包含字符序列的"空"的StringBuffer对象。

       StringBuffer(String str)

       创建一个StringBuffer对象,包含与String对象str相同的字符序列。

       实例代码:

public class Test{
    public static void main(String args[]){
	StringBuffer sBuffer = new StringBuffer("test");
        sBuffer.append(" String Buffer");
        System.out.println(sBuffer);  
   }
}

       运行结果:

技术分享

       (3)StringBuffer类常用方法

       1)重载方法public StringBuffer append(...)可以为该StringBuffer对象添加字符序列,返回添加后的StringBuffer对

象引用,例如:

技术分享

      2)重载方法public StringBuffer insert(...)可以为该StringBuffer对象在指定位置插入字符序列。返回修改后的该

StringBuffer对象引用,例如:

技术分享

      3)方法public StringBuffer delete(int start,int end)可以删除从start开始到end-1为止的一段字符序列,返回修改后

的该StringBuffer对象引用。

      4)和String类含义类似的方法:

技术分享

      5)方法public StringBuffer reverse()用于将字符序列逆序,返回修改后的该StringBuffer对象引用。

      实例代码:

public class Test{
    public static void main(String[] args){
		String s = "Mircosoft";
		char[] a = {'a','b','c'};
		StringBuffer sb1 = new StringBuffer(s);
		sb1.append('/').append("IBM").append('/').append("Sun");
		System.out.println(sb1);
		
		StringBuffer sb2 = new StringBuffer("数字");
		for(int i=0;i<=9;i++){
		    sb2.append(i);
		}
		System.out.println(sb2);
		sb2.delete(8,sb2.length()).insert(0,a);
		System.out.println(sb2);
		System.out.println(sb2.reverse());
    }
}         

      编译运行结果:

技术分享

       三StringBuffer类和StringBuilder类

       当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类。和String类不同的是,StringBuffer和

StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder类在Java 5中被提出,它和

StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的(不能同步访问)。由于StringBuilder相较于

StringBuffer有速度优势,所以多数情况下建议使用StringBuilder类。然而在应用程序要求线程安全的情况下,则必须

使用StringBuffer类。

       StringBuffer类支持的主要方法:

技术分享
       和String类的方法类似:

技术分享

技术分享















以上是关于JavaSE入门学习29:Java常用类之StringBuffer类和StringBuilder类的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE入门学习28:Java常用类之String类(下)

JavaSE入门学习27:Java常用类之String类(上)

Java全栈JavaSE:17.常用类之Object类String类StringBuilder类

Java全栈JavaSE:19.常用类之大数运算日期和日历包装类

Java全栈JavaSE:18.常用类之System类Math类数组相关操作字符串相关操作

JavaSE入门学习39:Java集合框架之比较器