StringBuffer类

一、基本介绍:

1、StringBuffer类

看下面这张图片:StringBuffer实现了Serialization和CharSequence接口、继承AbstractStringBuilder类。

java.lang.StringBuffer代表可变的字符序列,可以对字符串内容进行增删。

很多方法与String相同,但是StringBuffer是可变长度的。

也可以说StringBuffer是一个容器。下图是他的解释。(其实和上图表达的意思一样)

 2、StringBuffer的构造器

StringBuffer()

构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符StringBuffer stringbuffer = new StringBuffer();

StringBuffer(CharSequence seq)public java.lang.StringBuilder(charSequence seq)构造一个字符串缓冲区,它包含与指定的Charsequence 相同的字符。
StringBuffer(int capacity)//capacity[容量]

构造一个不带字符,但具有指定初始容量的字符串缓冲区。即对 char[]大小进行指定

StringBuffer stringbuffer = new StringBuffer(100);

StringBuffer(String str)

构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

StringBuffer hello = new StringBuffer("hello");

3、StringBuffer类的常用方法

StringBufier append(String str)向 StringBufer 追加内容 str
StringBufer append(StringBuffer sb)向StingBufer 追加内容sb
StringBuffer append(char c)向StringBuffer 追加内容c
StringBuffer delete(int start,int end)删除指定范围的字符串
StringBuffer insert(int offset,String str)在指定位置加上指定字符串
StringBuffer reverse( )将字符串内容反转
replace(start,end,string)将start到end 间的内容替换掉,不含end
indexOf()查 。查找子串在字符串第1次出现的索引,如果找不到返回-1
length( )获取长度

 趁热打铁:

1、写出下面代码输出的内容?
String str = null;
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(str);//底层调用的是AbstractStringBuilder
System.out.println(stringBuffer.length()); //4
System.out.println(stringBuffer);//null

2、要求:价格的小数点前面每三位用逗号隔开,并输出。

输出商品名称和商品价格,要求打印效果示例,使用前面 学习的方法完成:

商品名       商品价格

手机           123,456.69  //比如价格  3,345,678.88

主要代码展示:

String price = "9876544.90";
StringBuffer stringBuffer=new StringBuffer(price);

for (int i = stringBuffer.lastIndexOf(".")-3; i >0 ; i-=3) {
    stringBuffer=stringBuffer.insert(i,",");
}
System.out.println(stringBuffer);//9,876,544.90

二、String 和 StringBuffer 的对比

String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低。

StringBuffer 保存的是字符串变量,里面的值可以更改,每次StringBuffer的更新实际上可以更新内容 ,不用每次更新地址,效率较高。//char[] value;存放在堆里面。

总而言之,StringBuffer字符内容是存在 char[] value,当需要变化时(增加/删除),不用每次都更换地址(即不是每次创建新对象),所以效率高于String。

三、String 和StringBuffer的相互转换

1、String转为StringBuffer

String str ="hello tom";

 方式1:使用构造器

StringBuffer stringBuffer = new StringBuffer(str);

注意:返回的才是StringBuffer对象,对str本身没有影响

方式2:使用的是append方法

StringBuffer stringBuffer1 = new StringBuffer();

stringBuffer1 =stringBuffer1.append(str); 

 2、StringBuffer 转为 String

StringBuffer stringBuffer3 = new StringBuffer("Java学习");

方式1: 使用StringBuffer提供的 toString方法

String s = stringBuffer3.toString();

方式2: 使用构造器

String s1 = new String(StringBuffer3);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值