为什么需要StringBuffer

(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

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

猿创征文|2022个人开发工具集积累和分享

目录 1、谷歌浏览器 2、华为浏览器 3、腾讯文档 3、Notepad 4、IntelliJ IDEA 5、VisualStudio 6、VSCode 7、微信开发者工具 8、Navicat 9、PDManer 10、Git/Tortoise Git 11、Axure 12、NxShell 13、ApiPost 14、Xmind 15、Everything 16、WizTree 17、猿如意 今天给大家分享…

在idea里如何实现Git项目回滚

在idea里如何实现Git项目回滚 先我们要回滚的项目右键,如下: 点击Git,再点击Show History 选择你要回滚的分支 然后右键,如下: 点击Copy Revision Number 点击项目,右键,Git -------> Repository -…

人工智能:TensorFlow深度学习框架介绍

目录 1、TensorFlow简介 2、TensorFlow的主要任务 3. TensorFlow的特点 4、TensorFLow的缺点 5、TensorFlow的用途 6、实际案例 6.1 自动驾驶 6.2 安卓手机自拍功能 6.3 智能音箱 6.4智能医疗 今天给大家简单介绍一下TensorFlow深度学习框架,欢迎互相交流学习&#…

idea启动java服务报错OutOfMemoryError: GC overhead limit exceeded解决方法

在用idea开发java项目时,启动报内存溢出错误,致服务启动失败: Error:java: java.lang.OutOfMemoryError: GC overhead limit exceeded 报此错说明启动期间内存不够用了,把idea的启动进程堆内存值设大点就行了。 设置窗口&#x…

QQ微信刷屏助手 FlashScreenAssist 1.2发布

主要功能 文字刷屏图片刷屏简易教程 文字刷屏 打开软件之后输入要刷屏的文字,点击【开始】,然后点一下微信或者QQ的输入框,就会开始刷屏了,注意【时间间隔】不要调太小,越小越快。 要注意的是。必须在英文输入法下面才…

电脑技巧:Win10自带的6个实用功能,你都会用吗

目录 1、系统自带计算器 2、Win10自带截图功能 3、 Win10自带的手写输入 4、历史剪贴板 5、定时提醒 6、自带录屏功能 1、系统自带计算器 系统里自带了一个计算器大家都知道,打开是这个样子。 但当你点击计算器左上角的三个横杠图标后会发现这个计算器功能非常强大。…

Java多线程系列——深入重入锁ReentrantLock

简述 ReentrantLock 是一个可重入的互斥(/独占)锁,又称为“独占锁”。 ReentrantLock通过自定义队列同步器(AQS-AbstractQueuedSychronized,是实现锁的关键)来实现锁的获取与释放。 其可以完全替代 synchro…

前端:nodejs版本管理神器nvm软件使用笔记

目录 1、nvm简介 2、nvm的作用 3、nvm下载安装 4、整理常用的nvm命令 使用vue框架开发的朋友可能会遇到首次运行公司项目环境的时候,会出现使用npm install命令安装依赖包的时候出现各种各样的问题,其中很重要的一个错误原因就是因为你的nodejs版本和当时…

NetCore实战:基于html生成pdf文件案例讲解

目录 一、WkHtmlToPdfDotNet介绍 二、安装 三、运行效果 一、WkHtmlToPdfDotNet介绍 WkHtmlToPdfDotNet是基于本地 wkhtmltopdf封装的.NET Core类库,主要通过webkit引擎实现html页面转换为pdf文件。并且支持在Windows、Docker、Linux、MacOSX运行。 主要功能实现在线…

struts2+spring3+hibernate3+mysql简单登录实现

1.导入相关的jar包 2.建立数据库 1 create table account( 2 id int(10), 3 user varchar(50), 4 paw varchar(50) 5 ); 6 insert into account values(1,admin,admin); 3.建立包结构 4.配置文件的配置及代码 4.1 数据库配置文件:db.properties 1 #jdbc 2 jdbc.driv…

Spring事务管理嵌套事务详解 : 同一个类中,一个方法调用另外一个有事务的方法

Spring 事务机制回顾 Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务. 结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷。 其实这是不认识Spring事务传播机制而造成的误解&…

java多线程一览

线程概述:多线程的目的,不是提高程序的执行速度,而是提高程序的使用率(能抢到CPU的可能比较大). 因为线程是CPU调度的基本单位,所以,当一个程序的线程较多的时候就更容易抢到cpu的资源进程: 运行中的程序,是系统进行资源分配和调度的独立单位每个进程都有他自己的内存空间和系统…

人工智能:PyTorch深度学习框架介绍

目录 1、PyTorch 2、PyTorch常用的工具包 3、PyTorch特点 4、PyTorch不足之处 今天给大家讲解一下PyTorch深度学习框架的一些基础知识,希望对大家理解PyTorch有一定的帮助! 1、PyTorch PyTorch是一个基于Torch的Python机器学习框架。它是由Facebook的人工…

Linux下安装配置MySQL

一、删除原来的MySQL 在安装前要先确定系统是否已经安装了其他版本的MySQL,如已安装其他版本的MySQL,需先删除后再安装新版本。 1. 执行yum命令,删除MySQL的lib库,服务文件 yum remove mysql mysql-server mysql-libs mysql-serve…

WebSocket 是什么原理?为什么可以实现持久连接?什么情况使用WebSocket

作者:Ovear链接:https://www.zhihu.com/question/20215561/answer/40316953来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。额。。最高票答案没答到点子上,最后怎么跑到Nodejs上去了。…

【Swift学习笔记-《PRODUCT》读书记录-实现自定义转场动画】

iOS默认的push动画是把即将展示的控制器从右边推过来。有时我们想实现类似PPT中的一些动画,这时候就需要自定义转场动画了。如下图我们想实现一个淡出并且放大的过场动画,在退出时是一个淡出缩小的动画。 首先需要自定义一个类DiaryAnimator.swift遵守 U…