StringBuilder原理及StringBuffer
1.StringBuilder的原理
StringBuilder是用来干什么的?为什么我们要学习StringBuilder?字符串拼接明明String也可以实现
答:StringBuilder可以大幅提示字符串拼接的效率,这就是我们学习它的理由
具体原因,我们在内存图中进行讲解 如图
string拼接

主方法进栈,然后执行对象,字符串常量池进行创建,

当碰到s2时,有“+”,系统就会自动生成StringBuilder,然后将字符串进行拼接,接着再自动调用toString方法,将类型改为String,最后才把地址给s2.

s3也是如此,根据内存图我们就会发现,如果使用字符串进行拼接操作,每拼接一次,内存中就要产生2个对象(StringBuilder、ToString后),对象的创建和销毁都需要时间,所以string拼接很浪费时间
完整流程:https://kdocs.cn/l/cnfY68qsWVNS?linkname=150995474
stringBuilder拼接
stringBuilder的内存空间是由我们自己创建的,因此,每次的执行,系统都不会自动创建,而是调用我们自行创建的缓冲区空间


所以,这就是为什么stringBuilder在拼接方面的速度可以如此高效,在以后的拼接操作中,如果超过了5次的拼接,都建议使用StringBuilder来拼接
2.StringBuffer
StringBuilder与StringBuffer的使用一模一样,所以我们现在完全可以使用StringBUffer方法,但是它们两个之间也存在区别
1.StringBuilder是在JDK1.5开始才存在,StringBuffer则是在JDK1.0就存在
2.StringBuilder是线程不安全的,而StringBuffer是线程安全的,关于什么是线程安全,我们暂不解释,我们只需记住,线程安全对应的效率就低,线程不安全对应的效率也就高
可以想象成上厕所,有门和没门,有门肯定就更安全,但是也阻碍了我们上厕所的时间。没门我们直接就可以上厕所,但是肯定没那么安全
StringBuilder原理及StringBuffer的更多相关文章
- Java基础——数组应用之StringBuilder类和StringBuffer类
接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...
- (1)StringBuilder类和StringBuffer类 (2)日期相关的类 (3)集合框架 (4)List集合
1.StringBuilder类和StringBuffer类(查手册会用即可)1.1 基本概念 由于String类描述的字符串内容无法更改,若程序中出现大量类似的字符串时需要申请独立的内存空间单独保存 ...
- StringBuffer与StringBuilder原理与区别
其实只要找下Google大神就有答案了:StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,只是StringBuffer 中的方法大都采用了 synchronized ...
- Java基础(四) StringBuffer、StringBuilder原理浅析
StringBuilder与StringBuffer作用就是用来处理字符串,但String类本身也具备很多方法可以用来处理字符串,那么为什么还要引入这两个类呢? 关于String的讲解请看Java基础 ...
- Java基础 StringBuffer、StringBuilder原理浅析
StringBuilder与StringBuffer作用就是用来处理字符串,但String类本身也具备很多方法可以用来处理字符串,那么为什么还要引入这两个类呢? 首先看下面的例子 public sta ...
- java中String类、StringBuilder类和StringBuffer类详解
本位转载自http://www.cnblogs.com/dolphin0520/p/3778589.html 版权声明如下: 作者:海子 出处:http://www.cnblogs.com/dolp ...
- String类、StringBuilder类、StringBuffer类
String类是不可变类,创建了一个String对象后,该String对象中的字符序列不能被改变. StringBuilder是字符序列可变的字符串类,提供了一系列修改字符串的方法. StringBu ...
- 一大波Java来袭(四)String类、StringBuilder类、StringBuffer类对照
本文主要介绍String类.StringBuffer类.StringBuilder类的差别 : 一.概述 (一)String 字符串常量.可是它具有不可变性,就是一旦创建,对它进行的不论什么改动操作 ...
- JAVA String、StringBuilder、和StringBuffer的区别,及如何使用
目录 String类 一.String类的理解和创建对象 二.String类创建的方式 两种创建String对象的区别 测试题 三.String常用方法 四.StringBuffer类 1.Strin ...
- (1)String类 (2)StringBuilder类和StringBuffer类 (3)日期相关的类
1.String类(重中之重)1.1 常用的方法(练熟.记住)(1)常用的构造方法 String() - 使用无参的方式构造空字符串对象. String(byte[] bytes) - 根据参数指定的 ...
随机推荐
- 关于JetbrainsIDE升级到2024.2版本之后jetbra/ja-netfaliter激活失效不断弹窗的解决方案
1. 原因: jetbra/ja-netfaliter激活的原理是拦截并重定向与Jetbrains账号验证服务器的数据. 2024.2后jetbrains新的安装程序自带了三个区域语言包,其中若选择中 ...
- (三).NET6.0使用Autofac实现依赖注入
1.添加依赖注入的两个关键包 Autofac.Extensions.DependencyInjection 和 Autofac.Extras.DynamicProxy 2.在Program中添加Aut ...
- RockyLinux9编译安装MySQL8
Linux版本: Rocky Linux release 9.5 (Blue Onyx) 1.下载 打开MySQL-Community-Server官方下载页面:https://downloads.m ...
- VulNyx-Secrets
扫端口 扫描80端口发现有个secrets目录 还有个注释 继续扫发现http://192.168.200.11/secrets/login_form.php 有这个登录框 估计就是要爆破 usern ...
- 「SPOJ2666」QTREE4 - Query on a tree IV
题目概述 对一棵树维护两种操作:翻转某个点的颜色,求 \(max\{ dist_{u, v} \}\) 且满足 \(u\) 的颜色和 \(v\) 的颜色都是白色( \(u,v\) 可以相同). 思路 ...
- 使用天翼云云容器引擎CCE创建简单nginx服务
本文分享自天翼云开发者社区<使用天翼云云容器引擎CCE创建简单nginx服务>,作者:b****n 一.创建一个nginx应用. 1.选择资源池,如[杭州2],进入云容器引擎CCE平台页面 ...
- 优化-iceberg调参优化
一.建表优化 1.iceberg表支持更新操作. 文档:https://iceberg.apache.org/docs/latest/configuration/ 功能描述:因v1只支持insert, ...
- CSP2024 to do list...
马上 CSP 了,感觉得开始培养状态了. 哈希练习 Tarjan 初步学习+刷题 大模拟练习:鸭棋+猪国杀 S 组初赛,选择题部分,刷整卷至少 3 套. 树状数组练习:DX视频 线段树优化 dp 练习 ...
- 只需简单5步,Ansible脚本自动搭建AlwaysOn集群(已测试通过,可实际运行)
只需简单5步,Ansible脚本自动搭建AlwaysOn集群(已测试通过,可实际运行) 之前已经介绍过这套脚本,请看下面↓ 一分钟搞定!CentOS 7.9上用Ansible自动化部署SQL Serv ...
- ABP登录返回错误次数、锁定时间
ABP默认登录返回错误结果时,不会显示错误次数.锁定时间.为了实现验证错误时返回错误次数.锁定时间,我们需要改造返回接口. 1.定位验证错误的地方: 修改部分代码 1 /// <summar ...