黑马程序员-JAVA基础-StringBuffer 类 和StringBuilder 类

时间:2023-02-18 12:12:22

------- android培训java培训、期待与您交流! ----------

  StringBuffer 对象则代表一个字符序列可变的字符串。当一个 StringBuffer 被创建以后,通过StringBuffer 提供的一系列方法可以改变这个字符串对象的字符序列,一旦通过StringBuffer 生成了最终想要的字符串,就可以调用它的toString 方法将其转换成一个String 对象。

  JDK 1.5以后又新增了 StringBuilder 类。StringBuilder 类和 StringBuffer 类基本相似。不同的是,StringBuffer 是线程安全的, 而StringBuilder 则没有实现线程安全功能。所以性能略高。所以在不用考虑线程安全的情况下使用 StringBuilder 类。

 

一.StringBuffer 类:

  常用的方法:

  1、添加:

    StringBuffer append(数据) ; 将指定的数据作为参数添加到已有的数据结尾处。返回的还是原缓冲区对象。

    StringBuffer insert(int index , 数据) ; 可以将数据插入到指定角标index 位置。注意:index不能越界。

   2、删除:

    StringBuffer delete(int start , int end) ;删除缓冲区的数据,包含start,不包含end。

    StringBuffer deleteCharAt(int index) ; 删除指定位置的字符。

   3、获取:

    char charAt(int index) ; 获取指定位置的字符。

    String substring(int start)  返回一个新的 String,它包含此字符序列当前所包含的字符子序列 

    ... ...

    int indexOf(String str) ; 获取子串第一次出现的位置。

    ... ... 

    注意:获取方法和String 类中的方法类似。

   4、修改 :

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

      使用给定String 中字符代替此序列中的子串中的字符。

    void setChatAt(int index , char ch) 将给定索引出的字符设置成ch . 

    StringBuffer reverse() 将次字符序列用其反转形式取代。

 1 public class StringBufferDemo 
 2 {
 3     public static void main(String[] args)
 4     {  
 5         System.out.println("-------------------------------");
 6         CreateString(new StringBuffer("hello java")) ; 
 7         System.out.println("-------------------------------");
 8         DeleteString(new StringBuffer("hello java")) ;
 9         System.out.println("-------------------------------");
10         ReplaceString(new StringBuffer("hello java")) ;
11     }
12     public static void CreateString(StringBuffer stringBuffer )
13     {
14 //        添加数据到stringBuffer 结尾处,
15         stringBuffer.append("hello").append("java").append(520).append(true) ; 
16         System.out.println(stringBuffer);
17 //        在指定位置添加数据。
18         stringBuffer.insert(0, "heima,"); 
19         System.out.println(stringBuffer);
20     }
21     public static void DeleteString(StringBuffer stringBuffer)
22     { 
23 //        删除start至end的字符序列。
24         stringBuffer.delete(0,6);
25         System.out.println(stringBuffer);
26 //        删除指定位置的字符
27         stringBuffer.deleteCharAt(1) ;
28         System.out.println(stringBuffer); 
29     }
30     public static void ReplaceString(StringBuffer stringBuffer)
31     {
32 //        替换指定字符序列。
33         stringBuffer.replace(6, stringBuffer.length(), "wrold") ; 
34         System.out.println(stringBuffer);
35         stringBuffer.setCharAt(5, ',') ;
36         System.out.println(stringBuffer);
37 //        反转
38         stringBuffer.reverse(); 
39         System.out.println(stringBuffer); 
40     }
41 }

 

二.StirngBuilder 类 

  一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。