本文概述
- String和StringBuffer的性能测试
- String和StringBuffer HashCode测试
没有。 | 串 | StringBuffer |
---|---|---|
1) | 字符串类是不可变的。 | StringBuffer类是可变的。 |
2) | 当你连接太多字符串时, String速度很慢, 并且会占用更多内存, 因为每次创建新实例时, String都会出现。 | 当你可以分配字符串时, StringBuffer速度很快, 消耗的内存更少。 |
3) | 字符串类覆盖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 withStringBuffer: "+(System.currentTimeMillis()-startTime)+"ms");
}
}
Time taken by Concating with String: 578ms
Time taken by Concating withStringBuffer: 0ms
String和StringBuffer HashCode测试 【String和StringBuffer之间的区别】正如你在下面给出的程序中看到的那样, 当你连接字符串时, 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
推荐阅读
- StringBuffer和StringBuilder之间的区别
- Java可变参数(变量)
- Java静态导入
- Java的新功能介绍
- Java通用实例创建的类型推断
- try-with-resources语句
- ?算法题?面试题每日精进|蓝桥杯java怎么提交代码
- 蓝桥杯Python|蓝桥杯VIP题目免费提交,内含超详解,步步截图!!!
- win8系统手势技巧如何关闭|win8系统关闭手势技巧详细步骤