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) ...
随机推荐
- Jenkins+svn+maven自动部署到tomcat
jenkins所在主机配置好,jdk,maven,Tomcat 1.配置maven,jdk环境 1) 进入配置界面--->[系统管理]--->[Global Tool Configurat ...
- iOS.NS_DEPRECATED_IOS
如何处理被NS_DEPRECATED_IOS标记的selector, 例如:类 AVAudioSession中有: - (BOOL)setPreferredHardwareSampleRate:(do ...
- postfix 设置邮件头翻译,本域邮件不进行邮件头翻译,仅发送至外网的进行邮件头翻译?
postfix 设置邮件头翻译,本域邮件不进行邮件头翻译,仅发送至外网的进行邮件头翻译? 现在设置的 smtp_generic_maps = hash:/etc/postfix/generic sen ...
- Codeforces 749C. Voting 模拟题
C. Voting time limit per test: 1 second memory limit per test: 256 megabytes input: standard input o ...
- JVM 目录
JVM 目录 走进 JVM Java 虚拟机规范(Oracle 官网) Java 虚拟机规范(Java SE 7 中文版) (周志明等译) 周志明,深入理解Java虚拟机[M],机械工业出版社,201 ...
- Java中的逆变与协变 很直接不饶弯的讲出来了
```java 协变 extends只能new 辈分比自己低的家伙 List<? extends Number> list001 = new ArrayList<Integer> ...
- clean
启动tomcat 报 Could not delete D:/online/.metadata/.plugins/org.eclipse.wst.server.core/tm
- web前端面试题库
web前端面试题及答案 1.常用那几种浏览器测试?有哪些内核(Layout Engine)? 答: (Q1) 浏览器:IE,Chrome,FireFox,Safari,Opera. (Q2) ...
- 进入快速通道的委托(深入理解c#)
1.方法组:所有的名称相同的重载方法合在一起就成为一个方法组. 2.协变性和逆变性: 协变性指的是——泛型类型参数可以从一个派生类隐式转化为基类. 逆变性指的是——泛型类型参数可以从一个基类隐式转化为 ...
- mysql之索引查询1
一 备份数据 备份库: mysqldump:拷贝数据 --database:数据库 基本语法是:mysqldump -h服务器名 -u用户名 -p密码 --database 库名 > 备份路径. ...