栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

String,StringBuffer与StringBuilder的区别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

String,StringBuffer与StringBuilder的区别

一、Java String类 --String字符串常量

.字符串广泛应用在Java编程中,在Java中字符串属于对象,Java提供了String类来创建和操作字符串。

需要注意的说,String值是不可变的,这就会导致String的操作每次都会生成一个新的String对象,这样不仅是效率低下,而且会浪费大量的内存空间。

二、Java StringBuffer和StringBulide类--StringBuffer字符串变量、StringBulider字符串变量

如果当我们对字符串进行修改的时候,我们就会需要到StringBuffer类和StringBuilder类

和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次修改的,并且不产生新的未使用对象(间接也就是不耗费更多的内存)。。

StringBuilder类是在Java5中被提出来的,它和StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的(不能同步访问)

由于StringBuilder相较于StringBuffer有速度优势,所以多数情况下建议使用StringBuilder类,如果程序要求线程安全的情况下,则必须使用StringBufer类

三者的继承结构

 

 三者的区别

StringBuilder和StringBuffer非常相似,均代表可变的字符序列,并且方法也一样。

String:不可变字符序列

StringBuffer:可变字符序列.效率低、线程安全高

StringBuilder(jdk1.5)可变字符序列,效率高,线程不安全

String s="a"//创建了一个字符串

s=s+"b";//实际上原来的“a”字符串已经丢弃了,现在又产生了一个字符串s+"b”,也就是ab,如果多次执行这些改变串的内容会导致大量副本字符串对象留存在内存中,降低效率,这样循环操作会极大的影响程序的性能

1)字符修改上的区别(主要,见上面分析)

(2)初始化上的区别,String可以空赋值,后者不行,报错

①String

String s = null;   

String s = “abc”;   

②StringBuffer

StringBuffer s = null; //结果警告:Null pointer access: The variable result can only be null at this location

StringBuffers s = new StringBuffers();//StringBuffer是一个空的对象

StringBuffers s = new StringBuffers();//创建有内容的StringBuffer对象,对象的内容就是字符串。

小结:

1.如果要操作少量数据用String;

2.多线程操作字符串缓冲区下操作大量数据StringBuffer;

3.单线程操作字符串缓冲区下大量数据StringBuilder;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/713494.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号