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) ...
随机推荐
- 为Linux虚拟机设置网络
安装虚拟机的时候为了使用方便我们除了需要设置静态ip为了能够让虚拟机也能够上网我们需要设置虚拟机网络 当然也可以使用虚拟机和主机共享上网,这个比较简单,这里就不说了,现在我们来通过桥接的方式为虚拟机设 ...
- c# 把对象加入队列,对象为全局变量,对象改变队列值也跟着改变
若程序把对象加入队列,对象为全局变量,对象改变队列值也跟着改变,如下: filecontent 为两个字段的属性值. class FileContent { // public string Htt ...
- spring/spirng boot添加fluent日志-aop
此项目以aop的形式添加fluent 日志 sample介绍 spring-mvc-aop-helloworld 为spring mvc aop condition toolcommontest 为s ...
- jx9脚本引擎BUG修复
BUG1: rc = WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), pOutput, (DWORD)nOutputLen, 0, 0); 修 ...
- sqli-labs:7,导入导出;8-10 延时注入
1,Load_file()导出文件 使用条件: A.必须有权限读取并且文件必须完全可读(and (select count(*) from mysql.user)>0/* 如果结果返回正常,说明 ...
- maven web+spring mvc项目没有出现src/main/java路径
直接在main 文件夹下创建java可以解决 https://www.cnblogs.com/zhujiabin/p/6343462.html
- linux- Fedora25 下 解决anacondas3 与ibus冲突问题
问题:当我们安装了anaconda3之后,会发现ibus-setup进不去. 原因: 是因为ibus-setup的python应该使用python2. 而当我们安装了anaconda3之后,调用pyt ...
- default(T) 和 typeof 和 GetType()
一.default(T) 在泛型编成中如果不限制T类型参数是值类型或引用类型的话 你程序内部可能会出现错误,因为值类型不允许NULL.所以default用来获取一个类型的默认值,对于值类型得到new ...
- wireshark源码分析 一
因为手头的项目需要识别应用层协议,于是想到了wireshark,打算在项目中集成wireshark协议分析代码.在官网上下了最新版的wireshark源代码,我的天啊,200多M,这么多代码文件怎么看 ...
- Windows-universal-samples学习笔记系列五:Custom user interactions
Custom user interactions Basic input Complex inking Inking Low latency input Simple inking Touch key ...