• java中string、stringBuild、stringBuffer的区别


    (1)string

           1,Stirng是对象不是基本数据类型 
           2,String是final类,不能被继承。是不可变对象,一旦创建,就不能修改它的值。 
           3,对于已经存在的Stirng对象,修改它的值,就是重新创建一个对象,然后将新值赋予这个对象 

    (2)stringBuffer

       1,一个类似于 String 的字符串缓冲区,对它的修改的不会像String那样重创建对象。 
       2,使用append()方法修改Stringbuffer的值,使用toString()方法转换为字符串。 

    (3)stringBuild

           是jdk1.5后用来替换stringBuffer的一个类,大多数时候可以替换StringBuffer。和StringBuffer的区别在于Stringbuild是一个单线程使用的类,不值执行线程同步所以比              StringBuffer的速度快,效率高。是线程非安全的。

    (4)区别,联系

    使用举例 
    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多倍,而且随着循环次数的增加这个差距逐渐增大 

  • 相关阅读:
    bzoj1663: [Usaco2006 Open]赶集
    bzoj1662: [Usaco2006 Nov]Round Numbers 圆环数
    [bzoj3771]Triple
    [bzoj1477]青蛙的约会
    [bzoj2299][HAOI2011]向量
    [2017.4.7校内训练赛by hzwer]
    [bzoj2456]mode
    [bzoj2120]数颜色
    [bzoj3668][Noi2014]起床困难综合症/[洛谷3613]睡觉困难综合症
    [4.6校内训练赛]
  • 原文地址:https://www.cnblogs.com/deng-c-q/p/5082254.html
Copyright © 2020-2023  润新知