Java StringBuffer与StringBuider
来源:互联网 发布:ubuntu版本的区别 编辑:程序博客网 时间:2024/06/07 22:59
String 的值是不可变的,每次对String的操作都会生成新的String对象,不仅效率低,而且耗费大量内存空间。
StringBuffer类和String类一样,也用来表示字符串,但是StringBuffer的内部实现方式和String不同,在进行字符串处理时,不生成新的对象,在内存使用上要优于String。
StringBuffer 默认分配16字节长度的缓冲区,当字符串超过该大小时,会自动增加缓冲区长度,而不是生成新的对象。
StringBuffer不像String,只能通过 new 来创建对象,不支持简写方式
StringBuffer类中的方法主要偏重于对于字符串的操作,例如追加、插入和删除等,这个也是StringBuffer类和String类的主要区别。实际开发中,如果需要对一个字符串进行频繁的修改,建议使用 StringBuffer
public class Demo { public static void main(String[] args) { String fragment = "abcdefghijklmnopqrstuvwxyz"; int times = 10000; // 通过String对象 long timeStart1 = System.currentTimeMillis(); String str1 = ""; for (int i = 0; i < times; i++) { str1 += fragment; } long timeEnd1 = System.currentTimeMillis(); System.out.println("String: " + (timeEnd1 - timeStart1) + "ms"); // 通过StringBuffer long timeStart2 = System.currentTimeMillis(); StringBuffer str2 = new StringBuffer(); for (int i = 0; i < times; i++) { str2.append(fragment); } long timeEnd2 = System.currentTimeMillis(); System.out.println("StringBuffer: " + (timeEnd2 - timeStart2) + "ms"); }}
执行结果:
String: 1410ms
StringBuffer: 1ms
总结
线程安全:
StringBuffer:线程安全
StringBuilder:线程不安全
速度:
一般情况下,速度从快到慢为 StringBuilder > StringBuffer > String,当然这是相对的,不是绝对的。
使用环境:
操作少量的数据使用 String;
单线程操作大量数据使用 StringBuilder;
多线程操作大量数据使用 StringBuffer。
阅读全文
0 0
- Java StringBuffer与StringBuider
- java-StringBuider与StringBuffer
- Java StringBuffer与StringBuider
- java StringBuider 与 StringBuffer
- Java StringBuffer与StringBuider
- Java StringBuffer与StringBuider
- java之StringBuider与StringBuffer
- java之StringBuider与StringBuffer
- java入门教程-2.7 Java StringBuffer与StringBuider
- StringBuffer与StringBuider
- Java语法基础===Java StringBuffer与StringBuider
- Java中的StringBuffer和Stringbuider
- java中String stringBuffer StringBuider
- String、StringBuffer与StringBuider的区别
- java中String stringBuffer StringBuider 深入理解
- String、StringBuffer和StringBuider
- java中String和StringBuider,StringBuffer的区别
- 【Java】String的重载"+"操作与StringBuider
- 使用ReactiveCocoa 实现简单的验证码按钮
- Git命令总结
- C# 几种截取字符串的方法小结
- ArcGIS Engine 通过SOAP方式加载ArcGISServer切片服务看不到地图 问题
- CSS3新增伪类汇总
- Java StringBuffer与StringBuider
- 解析线程池
- 总结常见的ES6新语法特性
- socket服务器
- iOS-支付宝&微信支付
- Pandas标记删除重复记录
- 数据压缩原理实验5_JPEG编解码原理及代码分析
- ASP.NET-Cookie对象
- ssl证书多少钱 ?