博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String、StringBuilder、StringBuffer 区别
阅读量:7199 次
发布时间:2019-06-29

本文共 1320 字,大约阅读时间需要 4 分钟。

public static void testStringBuffer(){    long start System currentTimeMillis();    StringBuffer sbuf = new StringBuffer();    for(int=0;i<20000;i++){
    sbuf.append(i+",");   } System.out.println(System, currentTimeMillis()- start); } public static void teststringBulider(){   long start = System currentTimeMillis();   StringBuilder builder = new StringBuilder(   for (int i =0; i< 20000: i++)(     builder. append(i +",");     System, out. printIn(System. currentTimeMilliso- start);     }   } public static void main(String[] args){   teststring(); teststringBuffer();   teststringBulider();   }

 区别一:性能

运行结果如下:1217  9  6

从测试结果看出, String类每次追加字符串都会创建新的对象,消耗的时间最长,性能极差。

而 String Buffer和 String Builder每次追加字符串都是同一个对象,消耗的时间极短,性能良好。

而 String Buffer比 String builder消耗时间长一点点,这又是什么原因呢?别看急,继续往下看,

区别二:线程是否安全

· String:线程不安全    · String Buffer:线程安全     · String Builder:线程不安全

String Buffer和 String Builder的使用几乎完全相同,唯一的区别就是线程安全性不同。

正是因为 String Buffer是线程安全的(支持同步锁),所以性能比String Builder稍差一点。

可以看到 String Builder速度是最快的,但当在多线程中使用 String Builder的操作是不安全的,而但 String Buffer是可以正确操作的。

当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用 String Builder而不用String Buffer的。

 

总结:

1.如果要操作少量的数据使用 String。

2 多线程操作字符串缓冲区下操作大量数据使用 String Buffe。

3.单线程操作字符串缓冲区下操作大量数据使用 String Builde。

 

转载于:https://www.cnblogs.com/Jackie-zhang/p/10634679.html

你可能感兴趣的文章
CyanogenMod 编译 Google Galaxy Nexus (GSM) 全过程
查看>>
oracle case when的用法
查看>>
2.2 使用 JAXP 对XML文档进行SAX解析
查看>>
java_类型转换(转)
查看>>
EMC 存储 故障转移模式(Failover Mode)简介
查看>>
解决iis服务器 Server Application Error
查看>>
MySQL5.7杀手级新特性:GTID原理与实战
查看>>
波浪刻度电池View
查看>>
爬取阳光问政平台
查看>>
Maven: Usage
查看>>
Kotlin入门(22)适配器的简单优化
查看>>
代码外的任务很精彩 ---Software project survival guide 读书报告
查看>>
Java io流学习总结(二)
查看>>
PHP中的PDO函数库详解
查看>>
C++编程常见错误
查看>>
Converter of C#&VB.NET
查看>>
修改ASPCMS升级扩展功能
查看>>
模拟HTTP请求的返回&shell写cgi
查看>>
问题tips
查看>>
如何给NSMutableArray排序
查看>>