Java String和StringBuffer的区别

来源:互联网 发布:淘宝男装卫衣好店 编辑:程序博客网 时间:2024/06/01 23:49

简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
 而如果是使用 StringBuffer 类则结果就不一样了,每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。而在某些特别情况下, String 对象的字符串拼接其实是被 JVM 解释成了 StringBuffer 对象的拼接,所以这些时候 String 对象的速度并不会比 StringBuffer 对象慢,而特别是以下的字符串对象生成中, String 效率是远要比 StringBuffer 快的:
 String S1 = “This is only a” + “ simple” + “ test”;
 StringBuffer Sb = new StringBuilder(“This is only a”).append(“ simple”).append(“ test”);
 你会很惊讶的发现,生成 String S1 对象的速度简直太快了,而这个时候 StringBuffer 居然速度上根本一点都不占优势。其实这是 JVM 的一个把戏,在 JVM 眼里,这个
 String S1 = “This is only a” + “ simple” + “test”; 其实就是:
 String S1 = “This is only a simple test”; 所以当然不需要太多的时间了。但大家这里要注意的是,如果你的字符串是来自另外的 String 对象的话,速度就没那么快了,譬如:
String S2 = “This is only a”;
String S3 = “ simple”;
String S4 = “ test”;
String S1 = S2 +S3 + S4;
这时候 JVM 会规规矩矩的按照原来的方式去做。


Example:

public class StringBufferExample {public static void main(String[] args) {StringBuffer stringBuffer = new StringBuffer();String string = new String();System.out.println("I will now concatenate 1000000 copies of CAT using StringBuffer...");for (int i = 0; i < 1000000; i++) {stringBuffer.append("CAT");}System.out.println(stringBuffer);System.out.println("Done with that.  Now doing the same thing with Strings...");for (int i = 0; i < 1000000; i++) {string += "CAT";}System.out.println("Done!");}}
从运行结果中来看,stringbuffer在很短的时间内就能完成任务,而string由于要创造100万个新的string,要耗费极长的时间(我的电脑死机了)。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 什么是干货 干货图片 干货批发网 干货供应商 海干货批发 干货批发价 海产干货 水产干货 干货包装袋 野生菌干货 海干货 什么叫干货 干货有什么 香菇干货 炒干货 干货批发店 海货干货 松茸干货 散装干货 干货的种类 地摊干货 干货怎么样 零食干货 装修干货 炒干货机器 鱼干干货 干货怎么做 鲍鱼干货 海鲜 干货 派代干货 干货人参果 金银花干货 滑子菇干货 派代网干货 干货是什么意思 干货批发市场 甘肃必带干货特产 刚开始做干货怎么进货 香果干货图片 海鲜干货图片及名称 海鲜干货批发市场