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-1559 最大子矩阵
    hdu-1081 To The Max (最大子矩阵和)
    Oracle处理排序问题
    报表犯的错误
    MySQL中汉字一二三排序问题
    MySQL复习
    帆软查看显示和填报显示
    MySQL某年查询12个月份的数据
    mysql中去日期格式
  • 原文地址:https://www.cnblogs.com/SimplifyIT/p/6516294.html
Copyright © 2011-2022 走看看