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) ...
随机推荐
- 9.Mysql字符集
9.字符集9.1 字符集概述 字符集就是一套文字符号及其编码.比较规则的集合. ASCII(American Standard Code for Information Interchange)字符集 ...
- Python 字符串(center)
center 描述 Python center() 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串.默认填充字符为空格. 语法 center()方法语法: str.center(w ...
- js call方法的使用
转自:js call call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg ...
- 64位Win7系统下vs2010调试无法连接oracle解决办法
具体的解决办法如下: 1.先将WebDev.WebServer20.EXE和WebDev.WebServer40.EXE文件从Program Files (x86)目录中拷贝出来放到c:\dev目录中 ...
- UI和View 三种控制方式
AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xm ...
- The 10 Best Choices On The Market Review 2018
Looking to buy a scan tool or considering one of Autel Scanner impressive product line?. The company ...
- 解决Address is in use:Windows和Linux通过杀死进程
在开发无卡支付系统的过程中,因为用了端口来监听服务,在调试程序的时候,忘了关,再次运行的时候会出现Address is in use的问题,即端口已经被绑定,无法再次使用,最直观的方法就是杀死之前的进 ...
- SQL Server 2008数据库连接错误
以Windows身份连接SQL Server 2008数据库时,连接不上,出现如下报错画面: 解决办法:打开services窗口,找到名字类似于SQL Server (xxx)的服务,启动服务. 注: ...
- linux 软件编译问题汇总
1.问题: fatal error: openssl/opensslv.h: No such file or directory 解决: sudo apt-get install libssl-dev ...
- Vue router 全局路由守卫
记录一下全局路由守卫的使用: 方法一:定义一个数组用于检测与管理需要登录的页面,全局路由守卫配合本地存储判断是否跳转 import Vue from 'vue' import Router from ...