美文网首页java基础
java中StringBuffer

java中StringBuffer

作者: 小漫画ing | 来源:发表于2019-03-11 21:51 被阅读0次

    StringBuffer类的概述

    • 如果我们对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题;
    • 线程安全的可变字符序列;

    StringBuffer和String的区别

    • 前者长度和内容可变,后者不可变;
    • 如果使用前者做字符串的拼接,不会浪费太多的资源;

    构造方法

    public StringBuffer:无参构造;
    public StringBuffer(int capacity):指定容量的字符串缓冲区对象;
    public StringBuffer(String str):指定字符串内容的字符串缓冲区对象;

    package com.manman.cn;
    import java.lang.StringBuffer;
    public class StringBufferDemo {
        public static void main(String[] args) {
            //public StringBuffer:无参构造;
            StringBuffer sb=new StringBuffer();
            System.out.println("sb:"+sb);
            System.out.println("sb:"+sb.capacity());
            System.out.println("sb:"+sb.length());
            System.out.println("----");
            //public StringBuffer(int capacity):指定容量的字符串缓冲区对象;
            StringBuffer sb1=new StringBuffer(50);
            System.out.println("sb1:"+sb1);
            System.out.println("sb:"+sb1.capacity());
            System.out.println("sb:"+sb1.length());
            System.out.println("----");
            //public StringBuffer(String str):指定字符串内容的字符串缓冲区对象;
            StringBuffer sb2=new StringBuffer("hello");
            System.out.println("sb2:"+sb2);
            System.out.println("sb2:"+sb2.capacity());
            System.out.println("sb2:"+sb2.length());
            System.out.println("----");
        }
    }
    
    

    StringBuffer类的成员方法

    • 添加功能
      1、public StringBuffer append(String str):可以把任意类型添加到字符缓冲区里面;
    package com.manman.cn;
    /*
     * StringBuffer的添加功能
     * public StringBuffer append(String str):
     * 可以把任意类型添加到字符缓冲区里面,并返回缓冲区本身;
     */
    public class StringBufferDemo1 {
        public static void main(String[] args) {
            //创建字符串的缓冲区对象
            StringBuffer sBuffer=new StringBuffer();
            sBuffer.append("hello");
            System.out.println(sBuffer);
        }
    }
    
    

    可以继续在下面添加:

            sBuffer.append("hello");
            sBuffer.append(true);
            sBuffer.append(12);
            sBuffer.append(12.2);
            System.out.println(sBuffer);
    

    也可以下面这样:

    sBuffer.append("hello").append(true).append(12).append(12.2);
    

    和上面的结果是一样的;
    2、public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面;

    sBuffer.insert(2, "World");
    
    • 删除功能
      1、public StringBuffer deleteCharAt(int index):删除指定位置的字符,只删除一个,并返回本身;
      2、public StringBuffer delete(int start,int end):删除从指定位置开始到指定位置结束的内容,并返回本身;
    package com.manman.cn;
    
    public class StringBuffer2 {
        public static void main(String[] args) {
            ///创建对象
            StringBuffer string=new StringBuffer();
            //添加功能
            string.append("hello").append(true).append(12);
            System.out.println(string);
            //删除功能
            string.deleteCharAt(2);
            System.out.println(string);
            string.delete(1, 4);//包含前面,不包含后面
            System.out.println(string);
        }
    }
    
    
    • 替换功能
      public StringBuffer replace(int start,int end,String str):从start开始到end用str替换
    package com.manman.cn;
    
    public class StringBufferDemo2 {
        public static void main(String[] args) {
            //创建字符串缓冲区
            StringBuffer sb=new StringBuffer();
            //添加数据
            sb.append("hello").append("world").append("java");
            System.out.println("替换之前:"+sb);
            /*
             * 需求就是把world这个数据替换为“节日快乐”
             */
            sb.replace(5, 10, "节日快乐");
            System.out.println("替换之后"+sb);
        }
    }
    
    
    • 反转功能
      public StringBuffer reverse():反转
    package com.manman.cn;
    
    public class StringBufferDemo3 {
        public static void main(String[] args) {
            StringBuffer sb=new StringBuffer();
            sb.append("林青霞").append("我爱你");
            System.out.println("反转之前:"+sb);
            sb.reverse();
            System.out.println("反转之后:"+sb);
        }
    }
    
    
    • 截取功能
      public String substring(int start)
      public String substring(int start,int end)
      截取功能和前面几个功能是不一样的:返回值类型是不同的,截取的返回值类型是String,本身没有发生改变;
    package com.manman.cn;
    
    public class StringBufferDemo4 {
        public static void main(String[] args) {
            StringBuffer sb=new StringBuffer();
            //添加元素
            sb.append("hello").append("world").append("java");
            //截取功能
            String s=sb.substring(5);
            System.out.println("添加的元素:"+sb);
            System.out.println("截取后的元素:"+s);
            System.out.println("-------------");
            String s1=sb.substring(5, 10);
            System.out.println("从start开始到end的截取:"+s1);
        }
    }
    
    

    练习:

    1、转换(String和StringBuffer之间)

    package com.manman.cn;
    /*
     * 不能把字符串的值直接赋给StringBuffer,
     * 只能通过构造方法StringBuffer sb=new StringBuffer();
     * 赋值:(1)StringBuffer sb=new StringBuffer(5);
     *           (2)StringBuffer sb=new StringBuffer();
     *         sb.append()的方法
     */
    public class StringBufferDemo5 {
        public static void main(String[] args) {
            StringBuffer sb=new StringBuffer("java");
            //方式一:
            String str=new String(sb);
            //方式二
            String str1=sb.toString();
            System.out.println("转换字符串str:"+str);
            System.out.println("转换字符串str1:"+str1);
        }
    }
    
    

    2、把数组拼接成一个字符串

    package com.manman.cn;
    /*
     * 把数组拼接成一个字符串
     */
    public class StringBufferDemo7 {
        public static void main(String[] args) {
            //定义一个数组
            int [] arr={44,33,22,11};
            //定义功能
            //方式1:用String做拼接的方式
            String s1=arrayToString(arr);
            System.out.println(s1);
            //用StringBuffer做拼接的方式
            String s2=arrayToString2(arr);
            System.out.println(s2);
            
        } 
        //用StringBuffer做拼接的方式
        public static String arrayToString2(int[] arr){
            StringBuffer sb=new StringBuffer();
            sb.append("[");
            for(int x=0;x<arr.length;x++){
                if(x==arr.length-1){
                    sb.append(arr[x]);
                }else {
                    sb.append(arr[x]);
                    sb.append(",");
                }
                
            }
            sb.append("]");
            return sb.toString();//转换成String类型
        }
        //用String做拼接的方式
        public static String arrayToString(int[] arr){
            String s="";
            s+="[";
            for(int x=0;x<arr.length;x++){
                if(x==arr.length-1){
                    s+=arr[x];
                }else {
                    s+=arr[x];
                    s+=",";
                }
                
            }
            s+="]";
            return s;
        }
    }
    
    

    相关文章

      网友评论

        本文标题:java中StringBuffer

        本文链接:https://www.haomeiwen.com/subject/diixpqtx.html