String,StringBuilder和StringBuffer
来源:互联网 发布:sql语句计算平均值 编辑:程序博客网 时间:2024/06/06 16:29
参考:<java编程思想>
首先看如下的例子
import java.util.Random;public class StirngTest {public static Random rand=new Random(47);public static void main(String[] args) {useStringSimple();useStringBuilderSimple();useString();useStringBuilder();}public static void useStringSimple(){long start=System.nanoTime();String a="abc";String s=a+"def"+"gh";long end=System.nanoTime();System.out.println(end-start);}public static void useStringBuilderSimple(){long start=System.nanoTime();StringBuilder sb=new StringBuilder();sb.append("abc").append("def").append("ghi");long end=System.nanoTime();System.out.println(end-start);}public static void useString(){ long start=System.nanoTime(); String str=null; for(int i=0;i<10;i++){ str+=rand.nextInt(100); } long end=System.nanoTime(); System.out.println(end-start); } public static void useStringBuilder(){ StringBuilder sb=new StringBuilder(); long start=System.nanoTime(); for(int i=0;i<10;i++){ sb.append(rand.nextInt(100)); } long end=System.nanoTime(); System.out.println(end-start); } }
1.String对象时不可变的,不可变后带来一定的效率问题;但是当数据量较少时,StringBuilder的效率也不一定比String高
2.java虚拟机会为string对象创建StringBuilder对象,但是每次循环都会创建一个stringBuilder对象,因此会在一定程度上降低速度;
通过javap -c Stringtest命令将class文件反汇编成JVM字节码文件,可以看到(由43行重新跳到第8行)
3.StringBuffer是线程安全的,因此开销也会大一些;
使用准则:
如果要操作少量的数据用 = String
单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
多线程操作字符串缓冲区 下操作大量数据 = StringBuffer
阅读全文
0 0
- String 、StringBuffer 和 StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String Stringbuffer和StringBuilder
- String ,StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String和StringBuffer,StringBuilder
- String、StringBuffer和StringBuilder
- String, StringBuffer和 StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuilder和StringBuffer
- StringBuilder、StringBuffer和String:
- String、StringBuffer和StringBuilder
- maven的使用
- SDN 软件定义网络
- 【坐在马桶上看算法】算法3:最常用的排序——快速排序
- HBase admin用户权限不足
- 学而不思则罔,思而不学则殆
- String,StringBuilder和StringBuffer
- 1 Nginx + 12 Tomcat +2DB 实现2个程序负载均衡
- MyBatis多表连接的使用
- JVM 参数设置
- midas NFX 2018
- 微信开发配置(Yii框架下的开发)
- t_ICItem物料表概述
- HBA卡
- 论GIS售前工程师的自我修养