zoukankan      html  css  js  c++  java
  • StringBuffer类、StringBuilder类详解

    StringBuffer是一个字符串缓冲区,是一个容器,而且长度可变,可以直接操作多个数据类型,

                          最终会通过toString()方法变成字符串。

    容器的功能有:

    1、存储

    public StringBuffer   append():将指定数据添加到已有数据的结尾处。

    public StringBuffer insert(int offset,char c):  将字符c插入到offset位置。

     1)

     
    1. package j2se.StringBuffer.one;  
    2.   
    3. public class TestStringBufferDemo1 {  
    4.   
    5.     public static void main(String[] args) {  
    6.         StringBuffer sb =new StringBuffer();  
    7.         StringBuffer sb1=sb.append(88);  
    8.         sop(sb.toString());  
    9.         sop(sb1.toString());  
    10.         sop("sb==sb1:  "+ (sb==sb1));  
    11.         sop("sb.equals(sb1): "+(sb.equals(sb1)));  
    12.     }  
    13.     public static void sop(String str){  
    14.         System.out.println(str);  
    15.     }  
    16. }  

    结果为:

    88
    88
    sb==sb1:  true
    sb.equals(sb1): true


    2)

     
    1. package j2se.StringBuffer.one;  
    2.   
    3. public class TestStringBufferDemo1 {  
    4.   
    5.     public static void main(String[] args) {  
    6.         StringBuffer sb =new StringBuffer();  
    7.         StringBuffer sb1=sb.append(88).append(true).append("big");  
    8.         sop(sb.toString());  
    9.         sop(sb1.toString());  
    10.     }  
    11.     public static void sop(String str){  
    12.         System.out.println(str);  
    13.     }  
    14. }  

    结果为:

    88truebig
    88truebig

    3)指定位置插入

     
    1. package j2se.StringBuffer.one;  
    2.   
    3. public class TestStringBufferDemo1 {  
    4.   
    5.     public static void main(String[] args) {  
    6.         StringBuffer sb =new StringBuffer();  
    7.         sb.append(88).append(true).append("big");  
    8.         sb.insert(1,"qqhaoma");  
    9.         sop(sb.toString());  
    10.     }  
    11.     public static void sop(String str){  
    12.         System.out.println(str);  
    13.     }  
    14. }  

    输出结果为:

    8qqhaoma8truebig

    2、删除

    public StringBuffer delete(int start,int end)
              删除  start位置开始,end位置结束的子字符串,
              注意删除的内容包含头(start),不包含尾(end)。
    public StringBuffer deleteCharAt(int index)
               删除指定位置的字符。
     
    1)
     
    1. package j2se.StringBuffer.one;  
    2.   
    3. public class TestStringBufferDemo2 {  
    4.   
    5.     public static void main(String[] args) {  
    6.         StringBuffer sb= new StringBuffer("abcde");  
    7.         sb.delete(1,3);  
    8.         System.out.println(sb.toString());  
    9.     }  
    10.   
    11. }  
    结果为:
    ade
    
     

    2)清空缓存区

     
    1. package j2se.StringBuffer.one;  
    2.   
    3. public class TestStringBufferDemo2 {  
    4.   
    5.     public static void main(String[] args) {  
    6.         StringBuffer sb= new StringBuffer("abcde");  
    7.         //清空缓冲区。  
    8.         sb.delete(0,sb.length());  
    9.         System.out.println(sb.toString());  
    10.     }  
    11.   
    12. }  

    3、获取

    public char charAt(int index)
    public int indexOf(String str)
    public int indexOf(String str, int fromIndex)
    public int length()
    public String substring(int start,int end)

    4、修改

    public StringBuffer replace(int start,int end,String str)
       将start开始,end结尾的子字符串替换成str,包含开头,不包含结尾。
     
    public void setCharAt(int index,char ch) 
             设置index位置的字符为ch
     
      1)
     
    1. package j2se.StringBuffer.one;  
    2.   
    3. public class TestStringBufferDemo3 {  
    4.   
    5.     public static void main(String[] args) {  
    6.         StringBuffer sb= new StringBuffer("abcde");  
    7.         sb.replace(1, 4, "java");  
    8.         System.out.println(sb.toString());  
    9.   
    10.     }  
    11.   
    12. }  

    结果为:

    ajavae

      2)

     
    1. package j2se.StringBuffer.one;  
    2.   
    3. public class TestStringBufferDemo3 {  
    4.   
    5.  public static void main(String[] args) {  
    6.   StringBuffer sb= new StringBuffer("abcde");  
    7.   sb.replace(1, 4, "java");  
    8.   sb.setCharAt(0,'b');  
    9.   System.out.println(sb.toString());  
    10.  }  
    11. }  

    结果为:

    bjavae

    5、反转

    public StringBuffer reverse()

          将字符串反转

    6、

    public void getChars(int srcBegin, int srcEnd,char[] dst, int dstBegin)

          将缓冲区中指定数据存储到指定字符数组中。包含头,不包含尾。

     
    1. package j2se.StringBuffer.one;  
    2. public class TestStringBufferDemo4 {  
    3.     public static void main(String[] args) {  
    4.         StringBuffer st=new StringBuffer("abcdefg");  
    5.         char[] ch =new char[8];  
    6.         st.getChars(0,6,ch, 1);  
    7.         for(int i=0;i<8;i++){  
    8.             System.out.println("ch["+i+"]= " +ch[i]);  
    9.         }  
    10.     }  
    11. }  

    结果为:

    数据库 CURD    create  update read delete)

     JDK1.5以后出现StringBuilder。

    StringBuilder类完全兼容StringBuffer类的API,也就是说它是StringBuffer类的翻版。与其不同点是:

    StringBuilder类没有线程锁即线程不同步,StringBuffer类是线程同步的。

    多线程用StringBuffer类或者用StringBuilder类再自己加锁,单线程用StringBuilder类。

    以后开发建议用StringBuilder类。

    JDK升级三因素:

    1、提高效率

    2、简化书写

    3、提高安全性

  • 相关阅读:
    hdu 1251 字典树模板题 ---多串 查找单词出现次数
    一个极其简洁的Python网页抓取程序,自己主动从雅虎財经抓取股票数据
    JSONObject与JSONArray的使用
    关于DPM(Deformable Part Model)算法中模型结构的解释
    fullcalendar日历控件知识点集合
    android--自己定义ProgressDialog显示位置(其他Dialog子类都能够设置)
    最简单的Java框架
    java final keyword
    IBinder对象在进程间传递的形式(一)
    windows的定时任务设置
  • 原文地址:https://www.cnblogs.com/SimplifyIT/p/6516294.html
Copyright © 2011-2022 走看看