zoukankan      html  css  js  c++  java
  • Stirng,Stringbuffer,Stringbuild的区别浅淡

    String 
    1,Stirng是对象不是基本数据类型 
    2,String是final类,不能被继承。是不可变对象,一旦创建,就不能修改它的值。 
    3,对于已经存在的Stirng对象,修改它的值,就是重新创建一个对象,然后将新值赋予这个对象 
    StringBuffer 
    1,一个类似于 String 的字符串缓冲区,对它的修改的不会像String那样重创建对象。 
    2,使用append()方法修改Stringbuffer的值,使用toString()方法转换为字符串。 
    Stringbuild 
    是jdk1.5后用来替换stringBuffer的一个类,大多数时候可以替换StringBuffer。和StringBuffer的区别在于Stringbuild是一个单线程使用的类,不值执行线程同步所以比StringBuffer的速度快,效率高。是线程非安全的。 

    使用举例 
    String s1 = “hello”; 
    s1=“world”; 
    这个操作其实是:其实是创建了两个String对象。 
    String s2 = "hello" 
    s2 += "world"; 
    这操作是:先创建一个String对象,在接下来进行字符串连接的时候,有创建了一个StringBuild(jdk1.5前是StringBuffer),然后调用append()方法,最后调用toString()方法。 
    有此可以看出String对字符的操作比直接使用Stringbuffer(或者StringBuild)要多出附加的操作,而且String是不可变对象,使用String对字符串操作会产生大量的、多余java对象。所以结果是:影响性能,占用空间。 
    程序举例: 
    分别使用String和StringBuffer对字符串“0123456789”累加10000次,然后统计耗时多长 

            String str = "0123456789"; 
            String str2 = ""; 
            int count = 10000; 
            long start = System.currentTimeMillis(); 
            for (int i = 0; i < count; i++) { 
                str2 += str; 
            } 
            long end = System.currentTimeMillis(); 
            long time = (end - start); 
            System.out.println(time); 
    运行多次,在我的机器上平均时间约等于3300,即3.3秒,下面用StringBuffer来操作,查看结果 
    String str = "0123456789"; 
    StringBuffer sb = new StringBuffer(); 
    int count = 10000; 
    long start = System.currentTimeMillis(); 
    for (int i = 0; i < count; i++) { 
    sb.append(str); 

    String str2 = sb.toString(); 
    long end = System.currentTimeMillis(); 
    long time = (end - start); 
    System.out.println(time); 
    同样在我的机器上结果平均结果小于10,即0.01秒,两者相差300多倍,而且随着循环次数的增加这个差距逐渐增大 
    结果非常明显了,如果使用StringBuild时间还会再减少,这里就不再测试了。

  • 相关阅读:
    PetShop 4.0讨论专贴(Q&A)
    Google完成对Writely的整合
    Atlas学习手记(29):JavaScript面向对象的扩展(三):接口Interface
    Atlas学习手记(25):使用行为增强用户界面(五):AutoComplete Behavior
    Atlas学习手记(21):使用行为增强用户界面(一):Click Behavior
    Atlas学习手记系列
    Atlas学习手记(24):使用行为增强用户界面(四):Popup Behavior
    Atlas学习手记(27):JavaScript面向对象的扩展(一):命名空间Namespace
    同一个联盟,同一个梦想 —— 微软 .NET 俱乐部 2006 年在线发布会
    微软中文新闻组提供免费在线支持
  • 原文地址:https://www.cnblogs.com/vijozsoft/p/4489229.html
Copyright © 2011-2022 走看看