(1)为什么需要StringBuffer

由于String的内容是不可变的,在频繁操作字符串的应用中,导致String对象泛滥,不断的被创建和销毁,占用大量的内存和CPU时间。
例如,将十万个"A"连成一个大的字符串。代码如下:

这将创建100000个对象,其中有99999个对象是临时对象,是计算的中间结果。JVM需要花费大量的内存来存放,也需要花费大量CPU时间来回收对象。

因此,通常要使用可变的字符串缓冲区类(StringBuffer) 来完成类似的工作:

这样,只需要创建一个StringBuffer和一个String对象就行了。

(3)常用方式

运行结果:

(4)方法

     StringBuffer stringBuffer = new StringBuffer();stringBuffer.append("abcdex");System.out.println(stringBuffer); //abcdex//返回当前容量int capacity = stringBuffer.capacity();System.out.println(capacity);  // 16//返回长度(字符数)int length = stringBuffer.length();System.out.println(length);//不会影响之后的stringBuffer本身//截取开始到结尾的字符串,包括开头,不包括结尾String substring = stringBuffer.substring(0, 3);System.out.println(substring);  //abc//从指定位置截取到末尾String substring2 = stringBuffer.substring(3);System.out.println(substring2);  //dex//会影响之后的stringBuffer本身//删除指定位置的字符,并返回本身StringBuffer deleteCharAt = stringBuffer.deleteCharAt(0);System.out.println(deleteCharAt);  // bcdex//删除从指定位置开始到结束的内容,并返回本身StringBuffer delete = stringBuffer.delete(0, 3);System.out.println(delete);  // ex//从开始到结尾用指定字符串替换StringBuffer replace = stringBuffer.replace(0, 3, "A**");System.out.println(replace);  //A**//字符串反转StringBuffer reverse = stringBuffer.reverse();System.out.println(reverse);  //**A//替换指定位置的字符stringBuffer.setCharAt(0, 'T');System.out.println(stringBuffer); //T*A//在指定的位置(字符个数后)添加新的文本对象StringBuffer insert = stringBuffer.insert(2, "xx");System.out.println(insert);  //T*xxA

为什么需要StringBuffer相关推荐

  1. Java学习总结:31(StringBuffer类)

    StringBuffer类 在Java中String类不适合使用于频繁修改字符串的操作上(因为其字符串常量一旦声明则不可改变,只能改变字符串对象,改变的是其内存地址的指向),所以我们可以使用Strin ...

  2. String创建对象的个数 StringBuffer

    String name1 = "Tom"; //创建了一个String类型的对象 String name2 = "Lu"+"cy"; //创 ...

  3. String、StringBuffer与StringBuilder之间区别 (转载)

    最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBuilder的东西,现在整理一下. 关于这三个类在字符串处理中的位置不言而喻,那 ...

  4. String、StringBuffer、StringBuilder的理解

    问题: 理解 Java的字符串,String.StringBuffer.StringBuilder 有什么区别? 知识点 字符串设计和实现考量 String是Immutable(线程安全.字符串常量池 ...

  5. 常用API(Object、String、StringBuffer、用户登陆注册)

    常用API 今日内容介绍 u Object u String u StringBuilder 第1章 Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象 ...

  6. JAVA的StringBuffer类

    StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存 ...

  7. String、StringBuilder、StringBuffer的比较

    最近学习中又遇到了StringBuilder,突然就联想到StringBuffeer和String.于是翻翻笔记还在.那么他们有什么区别? 1.StringBuilder与StringBuffer S ...

  8. String,StringBuffer

    String类代表不可变的字符序列. String s1 = "hello"; String s2 = "hello"; s1 == s2  ==> tr ...

  9. StringBuilder、StringBuffer、String区别

    相信大家对 String 和 StringBuffer 的区别也已经很了解了,但是估计还是会有很多同志对这两个类的工作原理有些不清楚的地方,今天重新把这个概念给大家复习一下,顺便牵出 J2SE5.0 ...

  10. StringBuffer的delete方法与deleteCharAt方法的区别。

    delete方法与deleteCharAt两个方法都是用来删除StringBuffer字符串指定索引字符的方法, delete(int  begin,int  end)有两个参数,使用时删除索引从be ...

最新文章

  1. 在TensorFlow中对比两大生成模型:VAE与GAN(附测试代码)
  2. TortoiseMerge tutorial
  3. 人生感悟:一个男人必须具有的东西
  4. 语音信号之特性分析图(二)
  5. 拨号云服务器怎么自动配置网关_如何解决路由器静态IP+PPPoE拨号双链路负载分担问题...
  6. Visual Studio Code Go插件配置选项
  7. 基于Asp.Net Core MVC和AdminLTE的响应式管理后台之侧边栏处理
  8. 新手手册:Pytorch分布式训练
  9. php mvc 逻辑层在哪,mvc的业务逻辑应该放哪里?
  10. Visual C++ 中的ODBC编程
  11. FFmpeg(六) 播放视频之GLSurfaceView显示RGB数据
  12. 2021-2022年度第三届全国大学生算法设计与编程挑战赛(冬季赛)-正式赛 部分题解
  13. 大一python简答题_大学moocPython编程基础答案大全
  14. 数据结构C语言版第二版(名师严蔚敏最新力作)人民邮电出版社
  15. Linux软RAID换硬盘
  16. skimage.io模块读取图片
  17. ffmpeg-nvenc
  18. 年度绩效考核演示PPT模板
  19. 国外注册域名有哪些缺点?国外域名怎么转入国内?
  20. Locust的学习笔记(一、环境搭建以及初识locust)

热门文章

  1. 键盘流的逆袭- Idea 中使用 VIM mode 提高生成效率
  2. Android新闻案例clientserver达到,完全自己的新闻节目平台
  3. java基础实例代码_Java基础实例
  4. 基于像素聚类的分割方法基于slic的方法_博士论文摘要 | 张荣春:数码影像与TLS点云数据融合提取地质结构面方法研究...
  5. 出现23.97帧率的原因
  6. 使用Def文件导出dll
  7. python list遍历定位元素_python for循环,第二遍定位不到元素?
  8. c#和python同一主机直接udp_为什么Python 如此之慢
  9. matlab中如何提取等高线,在Python或MATLAB中从等高线图中提取数据
  10. java filter