StringBuffer详解

StringBuffer详解我们学习 StringBuffer 之前先查一下一些定义 先做个简单的了解可以看出 StringBuffer 的功能确实是很强大哦那么我们怎么创建 StringBuffer 呢 又怎么赋值呢 StringBuffer 类的构造方法 publicString 构造一个其中不带字符的字符串缓冲区 其初始容量为 16 个字符 publicString intcap

我们学习StringBuffer 之前先查一下一些定义,先做个简单的了解

在这里插入图片描述

可以看出,StringBuffer的功能确实是很强大哦

那么我们怎么创建StringBuffer呢?又怎么赋值呢?

StringBuffer类的构造方法

  • public StringBuffer() 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
  • public StringBuffer(int capacity) 指定容量的字符串缓冲区对象
  • public StringBuffer(String str) 指定字符串内容的字符串缓冲区对象

大家都知道String的初始化方法

String s="abc"; 

那么我们的StringBuffer也是很简单的

StringBuffer stringB= new StringnnnnBuffer(“java”); 

是不是很简单呢?但是StringBuffer的作用可不止这些

大家想一想,平时String是怎么进行字符串拼接,添加字符串的

是不是

String a="a"; String b="b"; String ab=a+b; 

或者是

String a="a"; a=a.concat("a"); 

那么我们再用StringBuffer试一下,这里StringBuffer有个方法:

public StringBuffer append(String str)
可以把任意类型添加到字符串缓冲区里面,并返回字符串缓冲区本身

StringBuffer a=new StringBuffer("abc"); a.append("b"); 

额,输出都能得到自己想要的结果,这样看我们好像没有必要去学习StringBuffer,但是我们的如果我们要在String s=”acd”中变成String s=“abcd”,恩。。。,好像还是StringBuffer更香

这里SpringBuffer又给我们提供一个方法:

public StringBuffer insert (int offset,String str)
在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

动手写一下:

String a="acd"; StringBuffer b= new StringBuffer(a); b.insert(1,"b"); System.out.println(b); 

结果:abcd

那么我再把它删了

public StringBuffer deleteCharAt (int index)
删除指定位置的字符,并返回本身

添加两行代码:

b.deleteCharAt(1); System.out.println(b); 

结果:acd

太简单了吧,那么我们有一个字符串abcdefgfijklmnopqrstuvwxyz,这数字不太搭,额…

StringBuffer b= new StringBuffer("abcdefgfijklmnopqrstuvwxyz"); b.delete(1,9); System.out.println(b); 

结果:abcdefgfijklmnopqrstuvwxyz


在这里插入图片描述


public StringBuffer replace(int start,int end,String str)
从start开始到end用str替换

StringBuffer b= new StringBuffer("abcdefgfijklmnopqrstuvwxyz"); b.replace(1,9,""); System.out.println(b); 

结果:abcdefgfijklmnopqrstuvwxyz


public StringBuffer reverse()
字符串反转

StringBuffer b= new StringBuffer("abcdefgfijklmnopqrstuvwxyz"); b.replace(1,9,""); b.reverse(); System.out.println(b); 

结果:zyxwvutsrqponmlkjifgfedcba

对了,StringBuffer还有截取的功能

public String substring(int start)
从指定位置截取到末尾

StringBuffer b= new StringBuffer("abcdefgfijklmnopqrstuvwxyz"); b.replace(1,9,""); System.out.println(b.substring(12)); 

结果:bcdefgfijklmnopqrstuvwxyz


public String substring(int start,int end)
截取从指定位置开始到结束位置,包括开始位置,不包括结束位置

StringBuffer b= new StringBuffer("abcdefgfijklmnopqrstuvwxyz"); b.replace(1,9,""); System.out.println(b.substring(1,12)); 

结果:


当然SpringBuffer还有其他的一些方法,比如:

public int capacity()
返回当前容量,理论值

public int length()
返回长度(字符数),实际值


区别:

String是一个不可变的字符序列

StringBuffer是可变的字符序列

优缺点:

  • String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。String的操作都是改变赋值地址而不是改变值操作。
  • StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。
 StringBuffer a=new StringBuffer(); //16字节的字符缓冲区 StringBuffer a=new StringBuffer(1024); //1024字节的字符缓冲区 StringBuffer buf=new StringBuffer("hello stringbuffer")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区。 

原创文章,梳理不足的地方,评论区评论一起解决

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/208735.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午10:53
下一篇 2026年3月19日 上午10:53


相关推荐

  • openCV人脸识别简单案例[通俗易懂]

    openCV人脸识别简单案例[通俗易懂]1基础我们使用机器学习的方法完成人脸检测,首先需要大量的正样本图像(面部图像)和负样本图像(不含面部的图像)来训练分类器。我们需要从其中提取特征。下图中的Haar特征会被使用,就像我们的卷积核,每一个特征是一个值,这个值等于黑色矩形中的像素值之后减去白色矩形中的像素值之和。Haar特征值反映了图像的灰度变化情况。例如:脸部的一些特征能由矩形特征简单的描述,眼睛要比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深等。Haar特征可用于于图像任意位置,大小也可以任意改变,所以矩形特征值是

    2022年5月28日
    53
  • Feign的工作原理[通俗易懂]

    Feign的工作原理[通俗易懂]Feign的工作原理Feign是一个伪JavaHttp客户端,Feign不做任何的请求处理。Feign通过处理注解生成Request模板,从而简化了HttpAPI的开发。开发人员可以使用注解的方式定制RequestAPI模板。在发送HttpRequest请求之前,Feign通过处理注解的方式替换掉Request模板中的参数,生成真正的Request,并交给JavaHttp客户端去处理。利用这种方式,开发者只需要关注Feign注解模板的开发,而不用关注Http请求本身,简化了Http请求

    2022年10月4日
    5
  • 应对未来挑战!巨头联手开发5G路由器

    应对未来挑战!巨头联手开发5G路由器

    2022年3月5日
    45
  • struts拦截器如何使用_信号拦截器

    struts拦截器如何使用_信号拦截器拦截器概述Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP(AspectOrientedProgramming,面向切面编程)的一种实现拦截器栈(InterceptorStack)。Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链

    2022年10月6日
    5
  • 递归算法 数据结构_数据结构中递归的定义

    递归算法 数据结构_数据结构中递归的定义一、什么是递归所谓递归,简单点来说,就是一个函数直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。引用知乎大佬的例子:我们可以把”递归

    2022年8月16日
    9
  • 三点估算法_三点估算法、方差计算、完工概率计算的讨论

    三点估算法_三点估算法、方差计算、完工概率计算的讨论2014 上 有心人 cnitpm com 10 31 53 请教一下 一项目 三点法估算最终结果是 21 天 标准差是 5 问 21 26 天之间完成的概率是多少 兄弟们 帮我一下 2014 上 有心人 cnitpm com 10 34 33 我问的太菜了 都不帮我 主要是我与答案整的不一样卡卡 cnitpm com 10 34 5234 1 阿牛 cnitpm com 10 35 00 嗯 你问得太菜了

    2026年3月19日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号