栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

StringBuffer类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

StringBuffer类

1、StringBuffer类概述

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

        public final class StringBuffer 线程安全,可变的字符序列。

         字符串缓冲区就像一个String ,但可以修改。

         在任何时间点,它包含一些特定的字符序列, 但可以通过某些方法调用来更改序列的长度和内容。

         简单记忆:它就是一个线程安全的可变字符串

2、StringBuffer和String的区别?

        1)StringBuffer的长度和内容都是可变的,String都不可变

        2)StringBuffer可以提前给出一个缓冲区,可以进行字符串的拼接,而不会重开辟新的空间                 String每创建新的字符串都会开辟新的空间

3、StringBuffer构造方法

         StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。

         StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定的初始容量。

         StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。

4、StringBuffer的方法

         public int capacity() 返回当前容量。

         容量是新插入字符可用的存储量,超过此值将进行分配。

         public int length() 返回长度(字符数)。

// StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。
StringBuffer sb = new StringBuffer();
System.out.println("sb: "+sb); //重写了toString()方法
System.out.println(sb.capacity());//查看初始容量16
System.out.println(sb.length());//查看字符数0

//StringBuffer(int capacity)  构造一个没有字符的字符串缓冲区,指定的初始容量。
StringBuffer sb1 = new StringBuffer(50);
System.out.println("sb1:"+sb1);
System.out.println(sb1.capacity());//50
System.out.println(sb1.length());//0

//StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。
StringBuffer sb2 = new StringBuffer("hello");
System.out.println("sb2:"+sb2);
System.out.println(sb2.capacity());//21  16+5
System.out.println(sb2.length());//5

5、StringBuffer类的成员方法          1)添加功能

                public StringBuffer append(String str)

                可以把任意类型的数据添加到字符串缓冲区中 返回的是当前字符串缓冲区本身

                public  StringBuffer insert(int offset,String str)

    StringBuffer sb = new StringBuffer();
        //public StringBuffer append(String str)
        //添加任意类型数据到字符串缓冲区中
//        sb.append("hello");
//        sb.append(true);
//        sb.append(10);
//        sb.append(12.34);
//        System.out.println(sb);//hellotrue1012.34

        //链式编程
        sb.append("hello").append(true).append(10).append(12.34);
        System.out.println(sb);//hellotrue1012.34

        //public StringBuffer insert(int index,String str)
        //在指定的索引上,插入字符串
        sb.insert(5,"java");
        System.out.println(sb);//hellojavatrue1012.34

        2)删除功能

                 public StringBuffer deleteCharAt(int index)

                 public StringBuffer delete(int start,int end)

 StringBuffer sb = new StringBuffer();
        sb.append("hello").append("java").append("bigdata");
        System.out.println(sb);//hellojavabigdata

        System.out.println("******************************");

       //public StringBuffer deleteCharAt(int index)删除char在这个序列中的指定位置。
        //返回的内容是本身
        sb.deleteCharAt(5);
        System.out.println(sb);//helloavabigdata
//        sb.deleteCharAt(20);//StringIndexOutOfBoundsException


        //public StringBuffer delete(int start,int end)
        // 删除此序列的子字符串中的字符。
        // 子串开始于指定start并延伸到字符索引end - 1 ,
        // 或如果没有这样的字符存在的序列的结束。 如果start等于end ,则不作任何更改。
        sb.delete(5,8);
        System.out.println(sb);//hellobigdata

        //如何利用现有方式删除所有的字符
        sb.delete(0,sb.length());
        System.out.println(sb);
        3)替换功能

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

         用指定的String中的字符替换此序列的子字符串中的String 。

         子串开始于指定start并延伸到字符索引end - 1 ,

         或如果没有这样的字符存在的序列的结束。

         第一子串中的字符被去除,然后指定String被插入在start 。

        ( 如果需要,此序列将被延长以容纳指定的字符串。)

StringBuffer sb = new StringBuffer();

sb.append("hello").append("hadoop").append("hive").append("spark");
System.out.println(sb);//hellohadoophivespark

//public StringBuffer replace(int start,int end,String str)
//这里的start和end表示的是原来的字符串需要替换的区间,含头不含尾
sb.replace(11,12,"数加真好");
System.out.println(sb);//hellohadoop数加真好ivespark
        4)反转功能

         public StringBuffer reverse()

        导致该字符序列被序列的相反代替。

         如果序列中包含任何替代对,则将它们视为单个字符进行反向操作。

StringBuffer sb = new StringBuffer();

sb.append("我爱你");

sb.reverse();
System.out.println(sb);//你爱我
        5)截取功能

         String substring(int start)

                 返回一个新的 String ,其中包含此字符序列中当前包含的字符的子序列。

         String substring(int start, int end)

                 返回一个新的 String ,其中包含此序列中当前包含的字符的子序列。

StringBuffer sb = new StringBuffer();

sb.append("java")
        .append("hadoop")
        .append("hive")
        .append("spark")
        .append("flink");

System.out.println(sb);//javahadoophivesparkflink

//String substring(int start)
//返回一个新的 String ,其中包含此字符序列中当前包含的字符的子序列
System.out.println("截出来的字符串为:"+sb.substring(4));//hadoophivesparkflink
System.out.println("StringBuffer的内容为:"+sb);//javahadoophivesparkflink


//String substring(int start, int end)
//返回一个新的 String ,其中包含此序列中当前包含的字符的子序列。
System.out.println("截出来的字符串为:"+sb.substring(14,19));//spark
System.out.println("StringBuffer的内容为:"+sb);//javahadoophivesparkflink

6、StringBuffer类练习          1)String和StringBuffer的相互转换

                 A--B,把A转化为B,为了是使用B的功能

                B--A,再把B转化为A,可能是最终的结果是需要A类型,所以还得转化回来

       //String -- StringBuffer

        String s="hello";
        //String类型不能直接赋值给StringBuffer类型
//        StringBuffer sb=s;
//        StringBuffer sb="hello";
        //方式1:通过构造方法转换
        StringBuffer sb = new StringBuffer(s);
        System.out.println(sb);//hello

        //方式2:通过StringBuffer的append()方法
        StringBuffer sb1 = new StringBuffer();
        sb1.append(s);
        System.out.println(sb1);//hello


        //StringBuffer -- String

        StringBuffer sb2 = new StringBuffer("BigData");
        //方式1:通过调用StringBuffer的toString()方法
        System.out.println(sb2.toString());

        //方式2:通过String的构造方法,将StringBuffer作为参数传入
        String s1 = new String(sb2);
        System.out.println(s1);

        2)把字符串反转,键盘录入字符串
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s1 = sc.next();

        //方式1:用String拼接
        String s = "";
        //将输入的字符串转化为字符数组
        char [] c = s1.toCharArray();
        //反转字符串
        for(int i=c.length-1;i>=0;i--){
            s+=c[i];
        }
        //输出
        System.out.println("反转后的字符串1:"+s);

        //方法2:利用StringBuffer的reverse()方法
        StringBuffer sb = new StringBuffer(s1);
        System.out.println("反转后的字符串2:"+sb.reverse());
 
    }
}

        3)把数组拼接成一个字符串(用StringBuffer实现)
char[] chars = {'a','b','c','d'};
StringBuffer sb = new StringBuffer();
for(int i = 0; i 
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/310011.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号