String 和 StringBuffer 之间有很多区别。 String 和 StringBuffer 的区别列表如下:
String | StringBuffer |
---|---|
String 类是不可变的。 | StringBuffer 类是可变的。 |
当连接过多的字符串时,字符串很慢并且消耗更多内存,因为每次它都会创建新实例。 | 当连接过多的字符串时,StringBuffer 速度很快并且消耗更少的内存。 |
String 类重写了 Object 类的 equals() 方法。 所以可以通过 equals() 方法比较两个字符串的内容。 |
StringBuffer 类不会覆盖 Object 类的 equals() 方法。 |
String 类在执行连接操作时速度较慢。 | StringBuffer 类在执行连接操作时更快。 |
String 类使用 String 常量池。 | StringBuffer 类使用堆内存 |
String和StringBuffer的性能测试
文件代码:ConcatTest.java
public class ConcatTest{
public static String concatWithString() {
String t = "Yiibai.com";
for (int i=0; i<10000; i++){
t = t + "vsdiffer.com";
}
return t;
}
public static String concatWithStringBuffer(){
StringBuffer sb = new StringBuffer("Yiibai");
for (int i=0; i<10000; i++){
sb.append("vsdiffer.com");
}
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: 571ms
Time taken by Concating with StringBuffer: 0ms
上面的代码,使用 String 类和 StringBuffer 类计算连接字符串所需的时间。
String 和 StringBuffer HashCode 测试
正如我们在下面给出的程序中看到的,String 在执行连接时返回新的哈希码,但 StringBuffer 类返回相同的哈希码。
文件代码:InstanceTest.java
package com.vsdiffer;
public class InstanceTest{
public static void main(String args[]){
System.out.println("Hashcode test of String:");
String str="vs";
System.out.println(str.hashCode());
str=str+"differ";
System.out.println(str.hashCode());
System.out.println("Hashcode test of StringBuffer:");
StringBuffer sb=new StringBuffer("vs");
System.out.println(sb.hashCode());
sb.append("differ");
System.out.println(sb.hashCode());
}
}
Hashcode test of String:
3773
1439922287
Hashcode test of StringBuffer:
865113938
865113938
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:String和StringBuffer的区别
本文链接:https://www.vsdiffer.com/vs/difference-between-string-vs-stringbuffer.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。