猿教程 Logo

String与StringBuffer的区别

String和StringBuffer之间有很多区别。 String和StringBuffer之间的区别列表如下:

No.StringStringBuffer
1)String类是不可变的。StringBuffer类是可变的。
2)当你拼接太多的字符串,String比较慢,消耗更多的内存,因为每次它创建新的实例。当你拼接字符串,StringBuffer是快速的,并且消耗更少的内存。
3)String类覆盖Object类的equals()方法。 所以你可以通过equals()方法比较两个字符串的内容。StringBuffer类不覆盖Object类的equals()方法。

String和StringBuffer的性能测试

相关实例:

public class ConcatTest{
    public static String concatWithString()    {
        String t = "Java";
        for (int i=0; i<10000; i++){
            t = t + "Tpoint";
        }
        return t;
    }
    public static String concatWithStringBuffer(){
        StringBuffer sb = new StringBuffer("Java");
        for (int i=0; i<10000; i++){
            sb.append("Tpoint");
        }
        return sb.toString();
    }
    public static void main(String[] args){
        long startTime = System.currentTimeMillis();
        concatWithString();
        System.out.println("Time taken by Concating with String: "+(System.currentTimeMillis()-startTime)+"ms");
        startTime = System.currentTimeMillis();
        concatWithStringBuffer();
        System.out.println("Time taken by Concating with  StringBuffer: "+(System.currentTimeMillis()-startTime)+"ms");
    }
}
Time taken by Concating with String: 578ms
Time taken by Concating with  StringBuffer: 0ms

String和StringBuffer HashCode测试

正如你可以看到在下面给出的程序,当你拼接字符串,String返回新的哈希码值,但StringBuffer返回相同。

相关实例:

public class InstanceTest{
    public static void main(String args[]){
        System.out.println("Hashcode test of String:");
        String str="java";
        System.out.println(str.hashCode());
        str=str+"tpoint";
        System.out.println(str.hashCode());
 
        System.out.println("Hashcode test of StringBuffer:");
        StringBuffer sb=new StringBuffer("java");
        System.out.println(sb.hashCode());
        sb.append("tpoint");
        System.out.println(sb.hashCode());
    }
}
Hashcode test of String:
3254818
229541438
Hashcode test of StringBuffer:
118352462
118352462


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Java/difference-between-string-and-stringbuffer.html