StringBuffer知识点

01-StringBuffer

1、String内存表示
在这里插入图片描述

 2、String的弊端
 3、StringBuffer类

3.0.为何要学习StringBuffer
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题

3.1.StringBuffer概述
3.2.StringBuffer的常见构造方法[n1]
public StringBuffer() 无参数构造方法[n2]

public StringBuffer(int capacity) 指定容量的字符串缓冲区对象

public StringBuffer(String str) 指定字符串内容的字符串缓存区对象

代码实战:

StringBuffer sb = new StringBuffer();

 System.out.println("sb:"+sb); // 空   =》   重写了toString

 

 System.out.println("sb.length:"+sb.length()); // 0

 

 System.out.println("sb.capaticy:"+sb.capacity()); //16

调用 public StringBuffer(int capacity) 测试

publicstaticvoid main(String[] args) {

StringBuffer sb = new StringBuffer(18);

System.out.println(“sb:”+sb);

System.out.println(“sb.length”+sb.length());

System.out.println(“sb.capaticy:”+sb.capacity());

}

观察打印结果:

在这里插入图片描述

测试 public StringBuffer(String str) 指定字符串内容的字符串缓存区对象

StringBuffer sb = new StringBuffer(“hello”);

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

System.out.println(“sb.length:”+sb.length()); // 5

System.out.println(“sb.capaticy:”+sb.capacity()); // 21

3.3.StringBuffer的常见成员方法
3.3.1.添加功能[n3]
public StringBuffer append(String str)

public StringBuffer insert(intoffset,String str)

代码实战:

publicstaticvoid main(String[] args) {

    StringBuffer sb = new StringBuffer();

    StringBuffer newSB = sb.append("hello");

  

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

    System.out.println("sb.length"+sb.length());

    System.out.println("sb.capaticy"+sb.capacity());

  

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

  

    System.out.println("newSB"+newSB);

    System.out.println("newSB.length"+newSB.length());

    System.out.println("newSB.capaticy"+newSB.capacity());

}

观察打印:

在这里插入图片描述

进一步验证:

  System.out.println(sb==newSB);

观察打印结果:

在这里插入图片描述

【开发总结】:StringBuffer的特点:

调用append 方法之后返回本身,所以sb对象在内存中只有一份

既然是可变的,那么说明可以往里面添加很多很多内容

StringBuffer ssb = new StringBuffer();

   ssb.append("hello");

   ssb.append("a");

   ssb.append(true);

   ssb.append(1.10);

  

    System.out.println("ssb:"+ssb);

  

    System.out.println("ssb.capaticy:"+ssb.capacity());

  

    System.out.println("ssb.length:"+ssb.length());

观察打印结果:
在这里插入图片描述

理论值[n4] 和实际值[n5]

public StringBuffer insert(intoffset,String str)

在指定索引位置 追加内存到字符串缓冲区

代码实战:

publicstaticvoid main(String[] args){

    StringBuffer ssb = new StringBuffer();

    ssb.append("hello");

   

    System.out.println("ssb:"+ssb);

  

   ssb.insert(4, "k");

    System.out.println("ssb:"+ssb); 

}

图片

3.3.2.删除功能
public StringBuffer deleteCharAt(int index)

public StringBuffer delete(int start,intend)

3.3.3.替换功能
public StringBuffer replace(int start,intend,String str)

3.3.4.反转功能
public StringBuffer reverse()

3.3.5.截取功能[n6]
public String substring(int start)

public String substring(int start,int end)

4.String 和StringBuffer的相互转换
4.1.为何要转换
要使用某个类的方法

在这里插入图片描述

4.2.转换方式
4.2.1.String =>StringBuffer
以下错误代码:

// 从String 转换到StringBuffer

    String str = "helloworld";

  

    StringBuffer sb = str;

  

    StringBuffer sb2 = "hello";

1.使用构造函数

public StringBuffer(String str)

2.使用append方法

String str = "hello";

   StringBuffer sb = new StringBuffer();

  sb.append(str);

4.2.2.StringBuffer => String
1.使用String的构造函数,接收的参数类型是 StringBuffer

2.调用StringBuffer的toString()方法

5.StringBuffer练习题

  把数组拼接成一个字符串

  把字符串反转

  判断一个字符串是否是对称字符串

例如"abc"不是对称字符串,“aba”、“abba”、“aaa”、"mnanm"是对称字符串

[n1]讲解构造方法的区别的时候,可以把长度功能和容量功能先解释一下。

长度:实际值

容量:理论值

[n2]默认长度是16

[n3]往字符串缓冲区中添加字符串内容

StringBuffer中有很多重载方法,所以可以追加任意内容进去

[n4]capaticy

[n5]length

• [n6]返回值类型是String类型,本身没有发生改变

微信扫一扫
关注该公众号

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_669646

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值