个性化阅读
专注于IT技术分析

String和StringBuffer之间的区别

本文概述

String和StringBuffer之间有很多区别。下面列出了String和StringBuffer之间的差异:

没有。 StringBuffer
1) 字符串类是不可变的。 StringBuffer类是可变的。
2) 当你连接太多字符串时, String速度很慢, 并且会占用更多内存, 因为每次创建新实例时, String都会出现。 当你可以分配字符串时, StringBuffer速度很快, 消耗的内存更少。
3) 字符串类覆盖Object类的equals()方法。因此, 你可以通过equals()方法比较两个字符串的内容。 StringBuffer类不会覆盖Object类的equals()方法。
字符串vs StringBuffer

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
赞(0)
未经允许不得转载:srcmini » String和StringBuffer之间的区别

评论 抢沙发

评论前必须登录!