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、提高安全性

  • 相关阅读:
    SCSI contrller的几种类型的区别
    ScaleIO与XtremSW Cache如何集成呢?
    如何强制使用某一大小的包去ping某个IP地址?
    如何查看ETW Trace?
    图像卷积与滤波的一些知识点(转)
    tensorflow serving 编写配置文件platform_config_file的方法
    python在linux的报错集锦
    某些数组和字符串类型转换(转)
    系统安装-007 CentOS7yum源添加、删除及其yum优化(转)
    Error:Failed to resolve: android.arch.core:common:1.1.0
  • 原文地址:https://www.cnblogs.com/SimplifyIT/p/6516294.html
Copyright © 2011-2022 走看看