StringBuffer 类

StringBuffer 类

StringBuffer 类是可变字符串类,创建 StringBuffer 类的对象后,可以随意修改、变更字符串的内容。每个 StringBuffer 类 的对象,都能够存储指定容量的字符串,如果字符串的长度超过了 StringBuffer 类对象的容量,则该对象的容量会自动的扩大。

一、 StringBuffer 类——构造方法

StringBuffer()          // 用于创建一个空的 StringBuffer 对象

StringBuffer(int length)  // 用于创建一个长度为 length 的 StringBuffer 对象

StringBuffer(String str)    // 返回一个字符串,初始化为 s ,长度为 s.length()+16 个字节

例: StringBuffer sb = new StringBuffer();

StringBuffer sb = new StringBuffer(32);

StringBuffer sb = new StringBuffer(“I like this”);

注:系统为 String 类对象分配内存是,按照对象中所含字符的实际个数等量分配。而 StringBuffer 类对象分配内存时,出去字符所占空间外,再另加 16 个字符大小的缓冲区。

 

二、StringBuffer 类——主要方法(全为 public )

1 ,获得长度、容量和设置长度

int capacity()                // 用于获取可变字符串的当前容量,值为字符串长度 +16

void setLength(int a)          // 用于设置当前可变字符串的长度

int length()                  // 用于获取可变字符串的长度,值为字符串长度

例: StringBuffer buf = new StringBuffer(“0123”);

buf.length() = 4;

buf.capacity() = 4 + 16 = 20;

一般 StringBuffer 的长度 (length) 是指存储在其中的字符个数,容量 (capacity) 是指缓冲区所能容纳的最大字符数。

 

2 , append 、 replace 、 reverse

StringBuffer append(Object obj) // 将对象参数以字符串的方式,加入到当前可变字符串中

StringBuffer append(String str)  // 将给定的字符串,追加到当前可变字符串中

StringBuffer append(StringBuffer sb)    // 将给定的可变字符串,追加到当前可变字符串中

StringBuffer replace(int a,int b,String str)// 使用新的字符串 str ,替换当前可变字符串中,起始位置为 a ,结束位置为 b 之间的内容

StringBuffer reverse(int start, int end, String str)

注: append 共有 11 个方法,上面仅列出常见的 3 个。

 

 

3 , insert 、 delete

StringBuffer insert(int offset,Object obj) // 将对象参数以字符串的方式,插入到当前可变字符串中指定位置

StringBuffer insert(int offset,String str)    // 将给定字符串,插入到当前可变字符串中指定位置

StringBuffer delete(int a,int b)           // 用于删除掉当前可变字符串中,起始位置为 a ,结束位置为 b 之间的内容

StringBuffer deleteCharAt(int a)          // 用于删除指定索引位置处的字符

void setCharAt(int a,char ch)    // 将给定字符 ch ,插入到当前可变字符串中指定索引位置处

 

4 ,其他

String toString()                       // 获得一个字符串常量来代表当前可变字符串

String substring(int start)

String substring(int start , int end);

注: insert 共有 10 个方法,上面仅列出常见的 2 个。

 

 

三、实例

1,  StringBuffer 类的创建和使用

例如: StringBuffer 类对象的创建及使用 StringBufferDemo.java

public class StringBufferDemo

{

      StringBuffer strBuf1 = new StringBuffer("Hello world!");

      // 声明、创建并初始化 StringBuffer 类的对象 strBuf1

      StringBuffer strBuf2;

      // 声明 StringBuffer 类的对象 strBuf2

      StringBuffer strBuf3 = new StringBuffer(10);

      // 声明并创建 StringBuffer 类的对象 strBuf3 ,并设定其长度为 10

      public StringBufferDemo()

      {

            strBuf2 = new StringBuffer("This is Java code.");

            // 创建并初始化 StringBuffer 类的对象 strBuf2

            strBuf3 = new StringBuffer("Hello");

            // 创建并初始化 StringBuffer 类的对象 strBuf3

            String output = "strBuf1:"+strBuf1.toString()+"/nlength="+ strBuf1.

                                    length()+"/ncapacity="+strBuf1.capacity();

            // 使用 StringBuffer 类的方法 toString() ,将 StringBuffer 类对象转化为 String

              型字符串

            // 使用 StringBuffer 类的方法 length() ,来获得该可变字符串的长度

            // 使用 StringBuffer 类的方法 capacity() ,来获得该可变字符串的最大存储容量

            System.out.println(output);

            strBuf1.setLength(30);

            // 使用 StringBuffer 类的方法 setLength() ,来设置可变字符串的长度

            System.out.print("After add strBuf1's length,");

            System.out.println("strBuf1's capacity is:"+strBuf1.length());

            strBuf1.ensureCapacity(60);

            // 使用 StringBuffer 类的方法 ensureCapacity() ,来设置可变字符串的最大存储容量

            System.out.print("Set strBuf1's capacity,");

            System.out.println("Now strBuf1's capacity is:"+strBuf1.capacity());

             System.out.println();

            System.out.println("strBuf2:"+strBuf2.toString());

            System.out.println("Char at 0 in strBuf2 is:"+strBuf2.charAt(0));

            System.out.println("Char at 9 in strBuf2 is:"+strBuf2.charAt(9));

             char ch[] = new char[strBuf2.length()];

            strBuf2.getChars(8,12,ch,0);

            // 使用 StringBuffer 类的方法 getChars() ,来获取 strBuf2 中第 8 ~ 12 位的字符

            System.out.println("The char from 8 to 12 is:");

            for(int i=0;i<4;i++)

             {

                   System.out.print("/""+ch[i]+"/",");

            }

            System.out.println("/n");

            System.out.println("strBuf3:"+strBuf3.toString());

            System.out.print("After append string to strBuf3,");

            strBuf3.append(" world.StringBufferDemo!");

            // 使用 StringBuffer 类的方法 append() ,在 strBuf3 末尾插入字符串

            System.out.println("New strBuf3:/n"+strBuf3.toString());

            System.out.print("After set the 5th char,");

            strBuf3.setCharAt(11,'!');

            // 使用 StringBuffer 类的方法 setCharAt() ,来更改 strBuf3 中第 11 位的字符

            System.out.println("the new strBuf3:/n"+strBuf3.toString());

      }

      public static void main(String[] args)

      {

            StringBufferDemo stringBufferDemo = new StringBufferDemo();

      }

}

 

2 , StringBuffer 类的插入和删除操作

例如: StringBuffer 类插入和删除方法的使用 InsertDeleteDemo.java

public class InsertDeleteDemo

{

      public static void main(String[] args)

      {

            String str = "Hello";

             // 声明并初始化字符串对象 str

            char ch[] = {'a','b','c','d','e','f','g'};

            // 声明并初始化字符数组 ch

            boolean b = true;

            // 声明并初始化布尔型变量 b

            int a = 10000;

            // 声明并初始化整型变量 a

            float f = 24.24f;

             // 声明并初始化单精度变量 f

            double d = 33.3333;

            // 声明并初始化双精度变量 d

            StringBuffer buffer = new StringBuffer();

            // 声明并初始化可变字符串对象 buffer

            buffer.insert(0,d);

            // 使用 StringBuffer 类中 insert() 方法,向 buffer 第 0 个位置插入各种类型值

            buffer.insert(0," ");

            buffer.insert(0,f);

            buffer.insert(0," ");

            buffer.insert(0,a);

            buffer.insert(0," ");

            buffer.insert(0,b);

            buffer.insert(0," ");

            buffer.insert(0,ch);

            buffer.insert(0," ");

            buffer.insert(0,str);

            System.out.println(buffer.toString()+"/n");

            buffer.deleteCharAt(6);

            // 使用 StringBuffer 类中 deleteCharAt() 方法,删除 buffer 中第 6 个位置的字符

             System.out.println(buffer.toString()+"/n");

            buffer.delete(5,12);

            // 使用 StringBuffer 类中 delete() 方法,删除 buffer 中第 5 个位置至第 11 位置之间的字符

            System.out.println(buffer.toString()+"/n");

      }

}

 

字符串类总结

1,  如果创建一个字符串,不打算修改它,用 String 。

2,  如果创建一个字符串,计划修改它,用 StringBuffer 。

3,  String 比 StringBuffer 执行效率高。

4,  StringBuffer 比 String 方便。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值