StringBuffer类

来源:互联网 发布:财务部数据流程图 编辑:程序博客网 时间:2024/06/16 01:23

一.    StringBuffer

1.  构造方法

1.  public StringBuffer()构造一个不带字符的字符串缓冲区,其初始容量为16个字符。

2.  public StringBuffer(int capacity)构造一个不带字符的字符串缓冲区,但其初始容量为指定容量。

3.  public StringBuffer(String str)构造一个字符串缓冲区,但为其初始化为str,初始容量为16+str字符数个字符。

2.  常用方法

1.  public int length()获取字符串长度。

2.  public int capacity()获取字符串缓冲区容量大小。

3.  StringBuffer有关添加的方法

1.  public StringBufferappend(int/double/String/char/boolean/……)当前这个方法追加给字符串缓冲区数据,返回字符串缓冲区本身

2.  public StringBuffer insert(int offset,Stringstr)

在某一个位置插入字符串,返回字符串缓冲区。

例:

public class StringDemo2 {

public static void main(String[]args) {

StringBuffers=new StringBuffer();

s.append(123).append(true).append(5.34).append("hello");

s.insert(5, "world");

   }

}

4.StringBuffer的删除功能

1.publicStringBuffer deleteCharAt(int index)表示删除指定位置打的字符,返回的是字符串缓冲区本身。

2.public StringBufferdelete(int start,int end)表示返回的是指定位置开始到指定位置结束的字符串,返回的是字符串缓冲区本身

例:

public class StringDemo2 {

   public static void main(String[]args) {

      StringBuffer buffer=new StringBuffer();

   buffer.append("fvndfiuvnfd").append("bdvdfiuvb").append("45678");

//    删除第12个字符

          System.out.println(buffer.deleteCharAt(12));

//        从开始制定位置,到结束指定位置之间的字符

          System.out.println(buffer.delete(12,buffer.length()));

   }

}

5.StringBuffer的反转功能

 Public StringBufferreverse()将字符串中的字符直接翻转过来

6.StringBuffer的替换功能

 Public StringBufferreplace(int start,int end,String str)

从指定位置开始到指定位置结束之间的字符串被字符串str替换

7.StringBuffer的截取功能

 1.publicString substring (int start)从指定位置截取到末尾,返回的是一个字符串

2.public String substring(int start,int end)从指定位置开始截取,到指定位置结束截取,返回的是一个字符串。

***面试题1:String,StringBuffer,StringBuilder之间的区别?

从字符串是否可变考虑:

String是一个不可变字符串序列,而StringBuffer和StringBuilder是一个可变字符序列。

从线程角度考虑:

StringBuffer线程不安全,不同步,执行效率高,要比StringBuffer高,因此在单线程中优先考虑StringBuilder,但是StringBuffer的线程安全。

从形式参数考虑:

  String作为形式参数和基本数据类型作为形式参数的效果是相同的。

面试题二:String和StringBuffer之间的区别?

StringBuffer:会构造一个字符串缓冲区,从内存角度考虑,,一般使用StringBuffer的情况比较多(在单线程中用StringBuilder代替),但StringBuffer效率比较高

String:普通字符串,但从内存上讲比较耗费空间

安全性:String---StringBuffer---StringBuilder

效率:StringBuilder---StringBuffer—String

例1:Stringbuffer与String之间的相互转换

public class StringDemo2 {

   public static void main(String[]args) {

//    String---StringBuffer

      String s="buitiful";

//    方式一

      StringBuffer b=new StringBuffer(s);

      System.out.println(b);

//方式二

      StringBuffer b1=newStringBuffer();

      b1.append(s);

      System.out.println(b1);

      System.out.println("------------------------------------------");

//    StringBuffer---String

      StringBuffer s2=new StringBuffer("bultiful");

// 方式一

      String t=new String(s2);

      System.out.println(t);

//    f方式二

      String t1=s2.toString();

      System.out.println(t1);

   }

}

例2:使用String和StringBuffer方法实现将字符型数组拼接成字符串 (定义功能方法,自己进行构造)

public class StringDemo2 {

   public static void main(String[]args) {

 int arr[]= {12,14,16,19,65};

// 使用String类型实现

 String s=arrtoString(arr);

 System.out.println(s);

// 使用StringBuffer类型实现

 String s1=arrtoString2(arr);

 System.out.println(s1);

   }

 

public static String arrtoString(intarr[]) {

   String s="";

   s+="[";

   for(intx=0;x<arr.length;x++) {

      if(x==arr.length-1) {

          s+=arr[x];

      }

      else {

          s+=arr[x]+",";

          }

      }

   s+="]";

return s;

  

}

public static String arrtoString2(int []arr ) {

   StringBuffer sb=new StringBuffer();

   sb.append("[");

   for(intx=0;x<arr.length;x++) {

      if(x==arr.length-1) {

          sb.append(arr[x]);

      }

      else {

          sb.append(arr[x]).append(",");

      }

   }

   sb.append("]");

 

returnsb.toString();

  

}

}

例3:通过String和StringBuffer来完成字符串的反转(String类中没有直接的反转,但有将字符串转化为数组的方法。StringBuffer类中有直接反转StringBuffer的反转方法,但最后还要使用toString方法,因为返回值类型为String型)。

import java.util.Scanner;

public class StringDemo2 {

   public static void main(String[]args) {

      System.out.println("请输入一段字符串:");

      Scanner sc=new Scanner(System.in);

      String str=sc.nextLine();

      String s=reverse(str);

      System.out.println(s);

      String b=reverse2(str);

      System.out.println(b);

   }

public static String reverse(String s) {

   String result="";

   char [] ch=s.toCharArray();

   for(intx=ch.length-1;x>0;x--) {

      result+=ch[x];

     

   }

   return result;

}

public static String reverse2(String s) {

   StringBuffer t=new StringBuffer(s);

   return t.reverse().toString();

  

}

}

例4:通过String和StringBuffer分别来完成判断字符串是否为对称字符串

分析:

          用第一个字符和倒数第一个字符相比较

          用二个字符和倒数第二个字符进行比较

     

   import java.util.Scanner;

public class StringDemo2 {

   public static void main(String[]args) { 

      System.out.println("请输入一段字符串");

      Scanner sc=new Scanner(System.in);

      String line=sc.nextLine();

      //通过String

      booleanflag=issame(line);

      System.out.println(flag);

//    通过StringBuffer

      booleanflag2=issame2(line);

      System.out.println(flag);

}

   public static booleanissame(Strings) {

      char [ ]ch=s.toCharArray();

      booleanflag=true;

      for(intstart=0,end=ch.length-1;start<=end;start++,end--) {

          if(ch[start]!=ch[end]) {

             returnflag=false;

          }

         

          }

         

      returnflag;

   }

   public static boolean issame2(String s) {

      return new StringBuffer(s).reverse().equals(s);

   }

  

   }