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

day15 JavaSe之StringBuffer类概述及其构造方法

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

day15 JavaSe之StringBuffer类概述及其构造方法

1、线程安全的
2、安全,代表着有同步操作出现,数据是安全的,效率不高
3、不安全,不同步,效率高
4、安全问题和效率问题一直都是头疼的问题
5、生活中哪些是线程安全的案例:
线程安全:银行的一些业务,售票,医院取号。。
不是安全问题的,效率高的:博客,视频会员。。
public final class StringBuffer
线程安全,可变的字符序列。
字符串缓冲区就像一个String ,但可以修改。
在任何时间点,它包含一些特定的字符序列,
但可以通过某些方法调用来更改序列的长度和内容。
简单记忆:它就是一个线程安全的可变字符串
StringBuffer和String的区别?
1、前者的长度和内容都是可变的,后者都不可变
2、前者可以提前给出一个缓冲区,可以进行字符串的拼接,而不会重新开辟新的空间
后者,每创建新的字符串都会开辟新的空间
StringBuffer的构造方法:
StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。
StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定的初始容量。
StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。
StringBuffer的方法:
public int capacity() 返回当前容量。
容量是新插入字符可用的存储量,超过此值将进行分配。
public int length() 返回长度(字符数)。

public class StringBufferDemo1 {
    public static void main(String[] args) {
        // StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。
        StringBuffer sb =new StringBuffer();
        int c =sb.capacity();
        System.out.println(c);
        //StringBuffer(int capacity)  构造一个没有字符的字符串缓冲区和指定的初始容量。
        StringBuffer sb1 =new StringBuffer(50);
        int c1 =sb1.capacity();
        System.out.println(c1);
        //StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。插入
        StringBuffer sb2 =new StringBuffer("hhhh");
        System.out.println(sb2);
        int c2 =sb2.capacity();
        System.out.println(c2);


}
}

StringBuffer:
添加功能
public StringBuffer append(String str)
可以把任意类型的数据添加到字符串缓冲区中
返回的是当前字符串缓冲区本身

public class StringBufferDemo2 {
    public static void main(String[] args) {
        StringBuffer sb =new StringBuffer();
//public StringBuffer append(String str)
        StringBuffer stringBuffer =sb.append("hello");
        System.out.println(sb);//打印sb
        System.out.println(stringBuffer);//打印 stringBuffer
        System.out.println(sb==stringBuffer);//判断 sb 与stringBuffer是否相等
        sb.insert(2,"hello");//hello中在第二个元素后加入hello
        System.out.println(sb);
    }

}

删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end)

public class StringBufferDemo3 {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();

        sb.append("hello").append("java").append("bigdata");
        System.out.println(sb);

        System.out.println("******************************");
        //public StringBuffer deleteCharAt(int index)删除char在这个序列中的指定位置。
        //返回的内容是本身
        sb.deleteCharAt(5);
        System.out.println(sb);//删除sb中下标为5的元素
        //        sb.deleteCharAt(20); //StringIndexOutOfBoundsException 超限
        //        System.out.println(sb);


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

    }
}

替换功能
public StringBuffer replace(int start,
int end,
String str)
用指定的String中的字符替换此序列的子字符串中的String 。
子串开始于指定start并延伸到字符索引end - 1 ,
或如果没有这样的字符存在的序列的结束。
第一子串中的字符被去除,然后指定String被插入在start 。 (
如果需要,此序列将被延长以容纳指定的字符串。)

public class StringBufferDemo4 {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();

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



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



    }
}

反转功能 public StringBuffer reverse()导致该字符序列被序列的相反代替。
如果序列中包含任何替代对,则将它们视为单个字符进行反向操作。

public class StringBufferDemo5 {
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer();
        sb.append("我想买三星s20u");
        sb.replace(2,3,"好");
        System.out.println(sb);
    }

}

截取功能
            String substring(int start)
                返回一个新的 String ,其中包含此字符序列中当前包含的字符的子序列。
            String substring(int start, int end)
                返回一个新的 String ,其中包含此序列中当前包含的字符的子序列。
public class StringBufferDemo6 {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("java")
                .append("hadoop")
                .append("hive")
                .append("spark")
                .append("flink");

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

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

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


    }
}

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

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

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