String的优化 Stringbuffer和Stringbuilder
string
上次说到string是最好衍生出来的一种字符类型,实现原理是由char[]。我们知道数组一旦创建时不可更改的,所以每一次进行字符串的拼接都是在new一个新的字符串进行添加,这样的话对内存的消耗极大在jdk1.0开始出现了stringbuffer优化 而创建对象的形式是在堆内存中存放的所以为了确保安全性stringbuffer添加了大量的重量锁(synchronize)由于加锁的原因导致了他的效率并不是太高,在jdk1.5之后又诞生了一个新的string的优化stringbuilder取消了大量的重量锁(synchronize)提高了效率但是导致了线程不安全。看情况进行使用
stringbuffer
jdk1.0诞生的stringbuffer,它是对字符串进行的拼接对内存的消耗小,内部提供了append()方法。当数据到达一定的量就会触发扩容。初始容量为16 每一次扩容都会length*2+2。可能会有有人问到为什么要加2,因为这个初始容量是可以设定的如果初始容量设置为0不进行加2永远都是0。每一次进行拼接字符串的过程中都有重量锁(synchronize)所以效率比较低
stringbuilder
jdk1.5诞生的stringbuilder,他和stringbuffer的操作是一样的只不过后来减少了重量锁的所以提高了效率但是这也导致了线程的不安全看业务需求选择使用buffer或者builder。
String的优化 Stringbuffer和Stringbuilder的更多相关文章
- String,StringBuffer,StringBuilder个人认为较重要的区别
今天在整理不可变对象知识点时,突然看到了String,StringBuffer,StringBuilder三者的区别,这里就挑一些我认为比较重要的点记录一下,方便日后查看. Strin ...
- String, StringBuffer and StringBuilder
一 String 概述: String 被声明为 final,因此它不可被继承. 在 Java 8 中,String 内部使用 char 数组存储数据. public final class Stri ...
- Java中的String,StringBuffer和StringBuilder
在了解这个问题的时候查了不少资料,最有帮助的是这个博文:http://swiftlet.net/archives/1694,看了一段时间,咀嚼了一段时间,写一个经过自己消化的博文,希望能帮到大家. 首 ...
- String与StringBuffer和StringBuilder的根本区别(String为什么无法修改字符串长度)
从网上看了很多的信息,说的大部分是关于final修饰的原因,却没有详细的解释!根据自己收集的资料,跟大家分享一下我的观点(有错请指正).1.我们都知道在修改字符串长度的时候,StringBuffer和 ...
- Java String,StringBuffer和StringBuilder的区别
[可变与不可变] String是字符串常量,不可变. StringBuffer和StringBuilder是字符串变量,可变. [执行速度方面] StringBuilder > StringBu ...
- String、StringBuffer、StringBuilder源码解读
序 好长时间没有认真写博客了,过去的一年挺忙的.负责过数据库.线上运维环境.写代码.Code review等等东西挺多. 学习了不少多方面的东西,不过还是需要回归实际.加强内功,方能扛鼎. 去年学习M ...
- Java基础-String、StringBuffer、StringBuilder
看下面这段代码: public class Main { public static void main(String[] args) { String string = ""; ...
- Java:String、StringBuffer和StringBuilder的区别
1 String String:字符串常量,字符串长度不可变.Java中String是immutable(不可变)的. String类的包含如下定义: /** The value is used fo ...
- Java的String、StringBuffer和StringBuilder的区别
1.String 2.Stringbuffer 3.StringBuilder 4.三者之间的区别 5.使用策略 1.String public final class String implemen ...
随机推荐
- MQTT的学习之Mosquitto安装和使用
Mosquitto是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为我们提供了非常棒的轻量级数据交换的解决方案.本文的主旨在于记录M ...
- Linux云计算高端架构师+DevOps高级虚拟化高级进阶视频
课程大纲 1.开班典礼(1)_rec.mp4 2.开班典礼(2)_rec.mp4 3.开班典礼(3)_rec.flv 4.Linux操作系统系统安装及启动流程(1)_rec.flv 5.Linux操作 ...
- jmeter+WebDriver:启动浏览器进行web自动化
无论是web自动化还是手机app自动化,WebDriver是Selenium的核心模块,jmeter WebDriver 仅支持Firefox.Chrome 和 HTML Unit驱动,暂不支持IE ...
- centos7不能连接外网
1. 首先保证虚拟机是NAT模式 2. 打开cmd窗口,输入ipconfig,查看vmnet8的ipv4地址是多少,DNS也需要记下,后面会用到 注意:vmnet8的ip要与虚拟机的网关IP在同一 ...
- Liunx学习总结(五)--包管理
包管理简介 Linux 上的应用程序一般是以源码形式或者编译后的二进制格式提供给用户使用.对于以源码形式提供的应用程序,用户需要借助于编译器,自行编译成二进制格式才能使用.而即便是编译后的二进制包,用 ...
- 设计模式(C#)——10享元模式
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 前言 在软件开发中,当我们需要对某些对象重复创建,且最终只需要得到单一结果.如果使用一般思维,那我们将浪费很多内存空 ...
- awrcrt更新到2.1(重大更新)
awrcrt更新到了2.1 awrcrt迎来了最近一年的最大一次更新,从2.03直接跳跃了2.1版本.本次更新,给awrcrt带了全面的改变. 最主要的更新内容是什么呢?请看 更新了图表javascr ...
- Eclipse Paho MQTT Utility
下载地址: https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/org.eclipse.paho. ...
- Win10安装Linux系统
windows系统安装虚拟机,常见的是利用VMware Workstation这款软件来进行安装.在未接触Docker之前,我一直通过这款软件来进行管理的.docker是运行在linux环境下的,那怎 ...
- 检查python标识符是否有效