与String的区别:
1. StringBuffer的运行效率更快,因为没有产生中间垃圾对象,一直在原来的值上修改。而String会产生很多中间对象,我们只关心最后的结果,所以这些中间对象都是垃圾,产生了中间变量,导致运行效率低。
2. StringBuffer用于生成字符串,String用于表示字符串。
3. StringBuffer是“可变化的量”,也就是在运行时可以修改,不必产生中间对象。String是常量,不可修改,所以会产生中间对象。
示例如下:
packagestringbuffer;
publicclass Demo1 {
public static void main(String[] args) {
String s = "";
StringBuffer sb = new StringBuffer();//创建一个StringBuffer对象
System.out.println(System.currentTimeMillis());//s=s+i时,输出当前时间是:1524809612430 执行sb.append(i)时,输出当前时间是:1524809728105;
for(int i = 1;i<=1000;i++){
sb.append(i);//StringBuffer对象在原字符串的基础上,不断追加,修改了原来的值,得到的是一个最终的结果,没有中间垃圾对象的产生。
//s = s+i;//因为string是常量,一旦确定,不可修改。所以每次string在做字符串相加的时候,都会产生新的对象,导致中间过程产生了很多字符串常量垃圾对象。与StringBuffer相比,效率低很多。
}
System.out.println(System.currentTimeMillis());//s=s+i时,输出当前时间是:1524809612440,运行了10ms 执行sb.append(i)时,输出当前时间是:1524809728105;说明StringBuffer运行效率高。
}
}