JAVA API之StringBuffer类

StringBuffer类

字符串是常量一旦创建之后,其内容与长度均不可改变,修改时需要创建新的字符串。故JDK中提供了一个StringBuffer(字符串缓冲区):内容和长度均可变,类似一个字符容器,在其中添加或删除字符时,并不会产生新的StringBuffer对象。更多使用方法请查询官方文档
现在我们通过一个案例来学习StringBuffer的一系列的常用方法。
reverse(相反的)StringIndexOutOfBoundsException(字符串角标越界)

public class StringBufferDemo {
    public static void main(String[] args) {
        System.out.println("1.添加..........................");
        add();
        System.out.println("2.删除...........................");
        remove();
        System.out.println("3.修改...........................");
        alter();

    }
    public static void add(){//添加操作
        StringBuffer sbu = new StringBuffer();//定义一个字符缓冲区
        //在末尾添加字符串
        sbu.append("abcdefg");
        System.out.println("append添加结果:"+sbu);
        //从1开始数在3号位置位插入123
        sbu.insert(2,"123");
        System.out.println("insert添加结果:"+sbu);

    }
    public static void remove(){
        StringBuffer sbu = new StringBuffer("abcdefg");
        //删除第二个元素到第五个元素(当我们说需求时,统一从1开始算起)
        sbu.delete(1,5);
        System.out.println("删除指定范围结果:"+sbu);
        //删除指定位置3的元素
        sbu.deleteCharAt(2);
        System.out.println("删除指定位置的元素:"+sbu);
        //清空缓存区
        sbu.delete(0,sbu.length());
        System.out.println("清空缓存区的结果:"+sbu);
    }
    public static void alter() {
        StringBuffer sbu = new StringBuffer("abcdefg");
        //将字符b修改为p
        sbu.setCharAt(1, 'p');
        System.out.println("修改指定位置字符的结果:" + sbu);
        //将pc替换为qq
        sbu.replace(1,3,"qq");
        System.out.println("替换指定字符串的结果为:"+sbu);
        //将得到的字符串进行翻转操作
        System.out.println("字符串翻转的结果为:"+sbu.reverse());
    }
}

append添加结果:abcdefg
insert添加结果:ab123cdefg
2.删除…
删除指定范围结果:afg
删除指定位置的元素:af
清空缓存区的结果:
3.修改…
修改指定位置字符的结果:apcdefg
替换指定字符串的结果为:aqqdefg
字符串翻转的结果为:gfedqqa

append()和insert()方法是最常用的,且有多种重载形式。
区别:
append()方法始终及那个这些字符添加到缓冲区的末尾
insert()方法可以在指定的位置添加字符。
delete()方法用于删除指定位置的字符
setCharAt()和replace() 方法用于替换指定位置的字符。
StringBuffer类与String类的不同之处
1.Sting类表示的字符串是常量,一旦创建,内容与长度无法改变
StingBuffer表示字符容器,其内容与长度可以随时修改。
在操作字符串是,如果该字符仅用于表示数据类型,则使用Sting类即可。
若需要对字符串中的字符进行增删操作,则使用StringBuffer类
2.String类覆盖了Object类的equals()方法,而StringBuffer类没有覆盖Object类的equals()方法。如下案例所示:

 String s1 = new String("abc");
        String s2 = new String("abc");
        System.out.println(s1.equals(s2));
        StringBuffer s3 = new StringBuffer("abc");
        StringBuffer s4 = new StringBuffer("abc");
        System.out.println(s3.equals(s4));
  }

true
false

3.String类对象可以用操作符“+”进行连接,而StringBuffer类对象之间不能,示例如下:

 String s1 = "a";
        String s2 = "b";
        String s3 =s1+s2;
        System.out.println(s3);
        StringBuffer sbu1 = new StringBuffer("a");
        StringBuffer sbu2 = new StringBuffer("b");
        StringBuffer sbu3 = sbu1 + sbu2;
        // Operator '+' cannot be applied to 'java.lang.StringBuffer', 'java.lang.StringBuffer'
        //运算符“+”不能应用于“java”。lang.StringBuffer.java。lang.StringBuffer'

当我们使用其进行连接时,会出现这样类型的错误。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值