JavaSE笔记8.2-String-StringBuffer

一. 概述

StringBuffer是字符串缓冲区,是一个容器。
在这里插入图片描述

二. 特点

  1. 长度可变。(数组也是容器,长度固定)
  2. 可以直接操作多种数据类型。(数组一次只能操作一种数据类型)

可以是除了byte/short外的其它基本数据类型、object类、String类、StringBuffer类

  1. 最终会通过toString()方法变成字符串

StringBuffer的对象不能直接输出,需要转换成String字符串输出

三. 常见操作

1. 存储
StringBuffer append(数据);//将指定数据作为参数添加到已有数据的结尾处
StringBuffer insert(index,数据);//将数据插入到指定index位置

例子1:

class StringBufferDemo{
    public static void main(String[] args){
        StringBuffer sb=new StringBuffer();//构造一个没有字符的字符串缓冲区
        StringBuffer sb1=sb.append(34);
        sop(sb.toString());
        sop(sb1.toString());
        sb.append("abc").append(true).append(34);//append()返回的是本类对象,可以继续调用本类方法
        sop(sb.toString());
        sb.insert(3,"qq");
        sop(sb.toString());
    }
    public static void sop(String str){
        System.out.println(str);
    }
}

运行结果是:
在这里插入图片描述
例子2:

class StringBufferDemo{
    public static void main(String[] args){
        StringBuffer sb=new StringBuffer();//构造一个没有字符的字符串缓冲区
        sb.append("abc").append(true).append(34);//append()返回的是本类对象,可以继续调用本类方法

        sb.insert(100,"qq");
        sop(sb.toString());
    }
    public static void sop(String str){
        System.out.println(str);
    }
}

运行结果是:
在这里插入图片描述

2. 删除
StringBuffer delete(int start, int end);//删除缓冲区中的数据,包含start不包含end
StringBuffer deleteCharAt(int index);//删除指定位置的字符

例子:

class StringBufferDemo{
    public static void main(String[] args){
        StringBuffer sb=new StringBuffer("abcde");
        sb.delete(1,3);
        sop(sb.toString());
        StringBuffer sb1=new StringBuffer("ABCDE");
        sb1.delete(0,sb1.length());
        sop(sb1.toString());
        StringBuffer sb2=new StringBuffer("qwert");
        sb2.deleteCharAt(2);
        sop(sb2.toString());
    }
    public static void sop(String str){
        System.out.println(str);
    }
}

运行结果是:
在这里插入图片描述

3. 获取(同String类的获取方法、子串方法)
int length();//获取字符串缓冲区的长度,也就是字符串缓冲区包含的字符数
char charAt(int index);//获取位置index上的某个字符
int indexOf(String str);//获取子串str在字符串缓冲区中第一次出现的位置
int indexOf(String str,int fromIndex);//从fromIndex开始,获取str在字符串缓冲区中第一次出现的位置
int lastIndexOf(String str);//获取子串str在字符串缓冲区中最后一次出现的位置
String substring(int start);//返回从指定位置开始到结尾的子串
String substring(int start,int end);//返回子串,包含start不包含end
4. 修改
StringBuffer replace(int start,int end,String str);//用指定子串str代替字符串缓冲区中的序列,包含start不包含end
void setCharAt(int index,int ch);//将指定位置index的字符设置为ch

例子:

class StringBufferDemo{
    public static void main(String[] args){
        StringBuffer sb=new StringBuffer("abcde");
        sb.replace(1,4,"java");
        sop(sb);
        StringBuffer sb1=new StringBuffer("abcde");
        sb1.setCharAt(2,'k');
        sop(sb1);
}
    public static void sop(Object obj){
        System.out.println(obj);
    }
}

运行结果是:
在这里插入图片描述

5. 反转
StringBuffer reverse();

例子:

class StringBufferDemo{
    public static void main(String[] args){
        StringBuffer sb=new StringBuffer("abcde");
        sb.reverse();
        sop(sb);
}
    public static void sop(Object obj){
        System.out.println(obj);
    }
}

运行结果是:
在这里插入图片描述

6. 将缓冲区中指定数据存储到指定字符数组中
void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin);//将字符串缓冲区中指定位置的数据存储到字符数组dst中,包含srcBegin不包含srcEnd
class StringBufferDemo{
    public static void main(String[] args){
        StringBuffer sb=new StringBuffer("abcdef");
        char[] chs=new char[4];
        sb.getChars(1,4,chs,1);
        for(int x=0;x<chs.length;x++){
            sop("chs["+x+"]="+chs[x]);
        }
}
    public static void sop(Object obj){
        System.out.println(obj);
    }
}

运行结果是:
在这里插入图片描述

四. StringBuilder

一个可变的字符序列,此类提供一个与StringBuffer兼容的API
但不保证同步,该类被设计用作StringBuffer的一个简易替换

在JDK1.5版本之后,出现了StringBuilder
StringBuffer是线程同步的(安全)
StringBuilder是线程不同步

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值