文档章节

String 与 StringBuilder、StringBuffer区别

l
 linyaohua
发布于 2016/03/29 18:10
字数 411
阅读 7
收藏 0

String

String 类使用char[]存储字符,并在char[]用final标识,所以String对象一经创建长度就是固定的不可变的了;

public final char value[];

StringBuilder、StringBuffer

共同继承abstractStringBuilder类,用public char value[];装载字符串,所以数组长度是可变的,可通过Capacity设置数组长度,一旦字符长度超出容量,数组长度会自动翻倍扩展。EnsureCapacity检查当前value[]宽度。

此外,StringBuffer在abstractStringBuilder之外添加了同步锁,所以StringBuffrer是线程安全的。


从执行效率上比较,执行速度是StringBuilder>StringBufer>String,所以当数据量小的时候,可以用较小的时候可以选择使用String,数据量较大且保证线程安全的情况下(如IO),使用StringBuffer,若不需要支持线程安全,从速度方面考虑,应该使用StringBuilder.

为什么StringBuilder、StringBuffer在性能上跟String有区别呢?

String a = “abc”;

a+="efg";

实际上,上面这两条语句,创建了三个String对象“abc”,“efg”,"abcefg".

String str = new String(“abc”)+new String("abc");

则创建了4个String对象,首先创建一个“abc”对象用于存储“abc”,然后new 了一个String 对象,第二个new String("abc"),由于已经存在“abc”对象,所以不需要重新创建,但是此时又new了一个对象,最后创建一个String对象用于存储结果,所以一共创建了4个String对象。

由此可见,不断地创建String在性能上肯定会有影响的。

而StringBuffer与StringBuilder则始终操作一个String对象,只是对长度有所调整就可以了。

© 著作权归作者所有

共有 人打赏支持
l
粉丝 0
博文 5
码字总数 3006
作品 0
广州
java中String、StringBuffer、StringBuilder的区别 - jihite

java中String、StringBuffer、StringBuilder的区别 - jihite 博客园jihite2018-01-011 阅读 StringBufferjavaString Java里面提供了String,StringBuffer和StringBuilder三个类来封装字符串 ......

博客园_jihite
01/01
0
0
String,StringBuilder,StringBuffer对比

简述 StringBuilder 对比 StringBuffer StringBuilder是非线程安全 StringBuffer是线程安全的。 StringBuilder和StringBuffer其余的特性都是一样的,他们与String的区别: StringBuilder与S...

Real_man
03/20
0
0
【翻译】Java中String, StringBuffer, StringBuilder的区别

String 是 Java 中最重要的类之一,并且任何刚开始做Java编程的人,都会用String定义一些内容,然后通过著名的System.out.println()语句来打印出来。 然而,很多Java新手都不会意识到 String...

YuanyuanL
2014/09/03
0
4
Java深究之String、StringBuffer、StringBuilder的区别

在Java学习中,String、StringBuffer、StringBuilder三者是很重要的,在编写代码中经常使用到他们,那么深入的了解他们的异同是非常重要的,接下里我们详细剖析下这三个的异同之处 首先总结下...

MaxBill
07/02
0
0
String、StringBuilder、StringBuffer

相信大家看到过很多比较String和StringBuffer区别的文章,也明白这两者的区别,然而自从Java 5.0发布以后,我们的比较列表上将多出一个对象了,这就是StringBuilder类。String类是不可变类,...

Elivense
2016/12/19
5
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring IOC实现原理

1、BeanDefinition 对依赖翻转模式中管理对象依赖关系的数据抽象 实现依赖翻转功能的核心数据结构 依赖翻转功能都是围绕对BeanDefinition 处理完成的 有了这些BeanDefinition 基础数据结构,...

职业搬砖20年
13分钟前
0
0
Python判断变量的数据类型的两种方法

1、isinstance(变量名,类型) def varargsql(self, sql, *args): if isinstance(args, tuple): self.cursor.execute(sql, args) self.conn.commit() 2、通过与其他已......

fang_faye
14分钟前
0
0
xml 转义特殊字符

XML中共有5个特殊的字符,分别是:&<>“’。如果配置文件中的注入值包括这些特殊字符,就需要进行特别处理。有两种解决方法:其一,采用本例中的特殊标签,将包含特殊字符的字符串封装起来;...

inidcard
15分钟前
0
0
Mysql中哪些sql 不会走索引

1. 索引列参与了计算 SELECT `sname` FROM `stu` WHERE `age`+10=30; 2. 索引使用了函数运算 SELECT `sname` FROM `stu` WHERE LEFT(`date`,4) <1990; 3. like SELECT * FROM `houdunwang` W......

ChyiHuang
24分钟前
1
0
nginx 504 Gateway Time-out

打开nginx.config: 参数介绍: #设定http服务器http{include mime.types; #文件扩展名与文件类型映射表default_type application/octet-stream; #默认文件类型#charset utf-8; #默...

lyle_luo
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部