Java的StringBuffer和StringBuilder类
StringBuffer (字符串缓冲对象)
概念:用于表示可以修改的字符串,称为字符串缓冲对象
作用:使用运算符的字符串将自动创建字符串缓冲对象
例如: str1+str2的操作,实际上是把str1与str2都创建成StringBuffer类对象
构造方法:详见API
StringBuffer():创建一个空的StringBuffer对象,默认保留16个字符的缓冲空间
StringBuffer(String str):根据字符串str的内容创建StringBuffer对象,并默认保留 16 个字符的缓冲空间
StringBuffer(int capacity):创建一个空的StringBuffer对象,缓冲空间大小由capacity指定
方法:前面是返回值 + 方法
StringBuffer insert(int index, 数据值):将x插入到索引为index的位置,数据值可以为任何类型的数据
StringBuffer append(类型 数据):将类型的参数以字符串的表示形式追加到序列
int length():获得当前StringBuffer对象的长度
void setCharAt(int index, char ch):使用 ch 指定的新值替换 index指定的位置上的字符
String toString():转换为字符串形式
StringBuffer reverse():将当前StringBuffer对象中的字符序列倒置
StringBuffer delete(int start, int end):删除当前对象中从start位置开始直到 end 指定的索引位置的字符序列
StringBuffer deleteCharAt(int index):将删除 index 指定的索引处的字符
StringBuffer replace(int start, int end, String str):使用一组字符替换另一组字符,从 start位置开始替换,直到end位置结束
特点:Java中一旦创建了字符串就不能直接更改,这就是字符String的不变性
StringBuffer类正是针对此问题而提供的字符可变序列;和String类的最大区别就是可以更改
StringBuilder
概念:JDK1.5以后提供的新的字符缓冲区
作用:StringBuffer一样
区别: StringBuffer StringBuilder
线程是否安全 安全 不安全
效率 相对低 相对高
代码示例
package summary2; //字符缓冲区
public class StringBufferClass
{
static void StringBuffer()
{
String s = "StringBuffer";
StringBuffer sb = new StringBuffer(s); //根据指定字符串创建StringBuffer对象
sb.replace(6,12,""); //根据下标替换Buffer为空、得到String
String str = sb.toString(); //将sb类转换成字符串str
for (int i=0;i<200000;i++) //为测试效率循环添加数据
{
sb.append(str); //序列最后面添加对象str
sb.insert(0,str); //在下标0的位置插入str
}
}
static void StringBuilder() //创建StringBuilder方法、方法体和StringBuffer相同
{
String s = "StringBuffer";
StringBuilder sb = new StringBuilder(s);
sb.replace(6,12,"");
String str = sb.toString();
for (int i=0;i<200000;i++)
{
sb.append(str);
sb.insert(0,str);
}
}
public static void main(String[] args)
{
long startTime1 = System.currentTimeMillis(); //获取开始时间、精度位纳秒
StringBuffer(); //调用StringBuffer()
long endTime1 = System.currentTimeMillis(); //获取结束时间、精度位纳秒
System.out.println("StringBuffer运行时间:"+(endTime1-startTime1)+"ms");
long startTime2 = System.currentTimeMillis(); //获取开始时间、精度位纳秒
StringBuilder(); //调用StringBuilder()
long endTime2 = System.currentTimeMillis(); //获取结束时间、精度位纳秒
System.out.println("StringBuilder运行时间:"+(endTime2-startTime2)+"ms");
}
}
Java的StringBuffer和StringBuilder类的更多相关文章
- Java的 StringBuffer 和 StringBuilder 类
https://www.runoob.com/java/java-stringbuffer.html 返回值是它本身的类, 所以可以链式调用! 总结就是可以直接在对象上使用 , 可以链式使用, buf ...
- Java StringBuffer和StringBuilder类
Java StringBuffer和StringBuilder类 当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类. 和String类不同的是,StringBu ...
- Java 12 - Java StringBuffer和StringBuilder类
Java StringBuffer和StringBuilder类 当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类. 和String类不同的是,StringBu ...
- Java StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够 ...
- JAVA String、StringBuffer、StringBuilder类解读
JAVA String.StringBuffer.StringBuilder类解读 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作 ...
- Java ——String 类 StringBuffer 和 StringBuilder类 随机字符
本节重点思维导图 String 类 创建字符串 String str = "I love ai"; 在代码中遇到字符串常量时,"I love ai",编译器会使 ...
- String、StringBuffer和StringBuilder类的区别
Java提供了String.StringBuffer和StringBuilder类来封装字符串,并提供了一系列操作字符串对象的方法. 它们的相同点是都用来封装字符串:都实现了CharSequence接 ...
- StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类. 和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够 ...
- AJPFX关于StringBuffer,StringBuilder类 总结(一)
StringBuffer,StringBuilder类 StringBuffer是同步的,数据安全,效率低;StringBuilder是不同步的,数据不安全,效率高 StringBuffer:概述1) ...
随机推荐
- Squid 搭建正向代理服务器
Squid 是一款缓存代理服务器软件,广泛用于网站的负载均衡架构中,常见的缓存服务器还有varnish.ATS等. 正向代理服务器可满足内网仅有一台服务器可以上网,而要供内网所有机器上网的需求,也可以 ...
- OpenSource.SerializationLibrary
1. Cap'n Proto protocol buffer的主要作者之一创建的新项目.其主页描述Cap'n Proto的性能比PB快很多. http://kentonv.github.io/capn ...
- mysql 压缩方法
show global variables like 'innodb_file_format%';alter table t row_format=COMPRESSED;
- Vsphere初试——使用Vsphere client
好不容易安装好ESXi之后,就要安装一个Vsphere Client,为什么要安装这个东东.使用过vmware workstation的人都知道,安装完就可以添加虚拟机,但是ESXi要通过Vspher ...
- NC 5的开发环境起不了客户端
5的开发环境,中间件启动无异常,但是在起客户端时报错,连中间件也关闭了. 添加图中两个jdk下的包
- echo 变量不加引号出错
result=`ps aux | grep “×××” |grep -v “×××” start_time=$(echo $result | awk '{print $9}') 问题:发现输出是 s ...
- Java界面编程—事件监听机制
组件首先要先注册事件处理器,当用户单击组件.移动鼠标或者敲击键盘时都会产生事件(Event),一旦有时间发生,应用程序就会做出对该事件的响应,这些组件就是事件源(Event source). 接受.解 ...
- 安装linux子系统, 如何用win10 里面的linux子系统来进行通信
cd /mnt/d/linux_share即可 就把linux_share这个目录挂载到linux里面了.这样windows和linux可以同时修改和访问这个文件夹里面的内容. 安装:cmd中输入ba ...
- Prism-超轻量的开源框架
http://msdn.microsoft.com/en-us/library/ff648465.aspx prism 是微软模式与实践小组开发的一个进行MVVM模式开发,其中使用依赖注入等一些方法将 ...
- 2019.01.20 bzoj5158 Alice&Bob(拓扑排序+贪心)
传送门 短代码简单题. 题意简述:对于一个序列XXX,定义其两个伴随序列a,ba,ba,b,aia_iai表示以第iii个数结尾的最长上升子序列长度,bib_ibi表示以第iii个数开头的最长下降 ...