- 2
- 0
- 约8.67千字
- 约 9页
- 2017-10-22 发布于北京
- 举报
StringStringBufferStringBuilder三者之间的区别
1.
String类是不可变类,任何对String的改变都会引发新的String对象的生成;而StringBuffer则是可变类,任何对它所指代的字符串的改变都不会产生新的对象.
当改变字符串内容时,采用StringBuffer能获得更好的性能。既然是为了获得更好的性能,那么采用 StringBuffer能够获得最好的性能吗?答案是NO!为什么?如果你读过《Think in Java》,而且对里面描述HashTable和HashMap区别的那部分章节比较熟悉的话,你一定也明白了原因所在。对,就是支持线程同步保证线程安 全而导致性能下降的问题。HashTable是线程安全的,很多方法都是synchronized方法,而HashMap不是线程安全的,但其在单线程程 序中的性能比HashTable要高。StringBuffer和StringBuilder类的区别也在于此,新引入的StringBuilder类不 是线程安全的,但其在单线程中的性能比StringBuffer高。
将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer
2.StringBuffer和StringBuilder的区别?
StringBuffer 是线程安全的StringBuilder 不保证线程安全(在1.5中引入的),一般情况下比StringBuffer快。你的java正常运行是什么意思?你在ie中安装了jdk吧?【weiqiyiji】:就是我说我把环境变量classpath删除,然后把path里的Java部分的内容去掉后,写的Java程序一样通过编译,一样可以运行。这跟IE有什么关系?我的浏览器也不是ie【gongyali2005】:线程安全否?【bao110908】:不会吧,你是使用手工进行编译的?不说其他的,把 path 中关于 Java 的都去掉,javac 就没有办法用了!【phoenixsbk】:一样可以用的【qq7338367】:一个String对象的长度是固定的,不能改变它的内容,或者是附加新的字符至String对象中。您也许会使用+来串联字符串以达到附加新字符或字符串 的目的,但+会产生一个新的String实例。如果程序对这种附加字符串的需求很频繁,并不建议使用+来进行字符串的串联。在面向对象程序设计中,最好是 能重复运用已生成的对象,对象的生成需要内存空间与时间,不断地产生String实例是一个没有效率的行为。 J2SE 5.0提供java.lang.StringBuilder类,使用这个类所产生的对象默认会有16个字符的长度,您也可以自行指定初始长度。如果附加的 字符超出可容纳的长度,则StringBuilder对象会自动增加长度以容纳被附加的字符。如果有频繁作字符串附加的需求,使用 StringBuilder会让程序的效率大大提高。通过下面的简单测试程序就可以知道效能差距有多大。 ü 范例6.5?? AppendStringTest.java???????????????????????????????????????????????????????public class AppendStringTest { ???? public static void main(String[] args) { ???????? String text = ; ???????? long beginTime = System.currentTimeMillis(); ???????? for(int i = 0; i 10000; i++) ???????????? text = text + i; ???????? long endTime = System.currentTimeMillis(); ???????? System.out.println(执行时间: + (endTime - beginTime)); ???????? StringBuilder builder = new StringBuilder(); ???????? beginTime = System.currentTimeMillis(); ???????? for(int i = 0; i 10000; i++) ???????????? builder.append(String.valueOf(i)); ???????? endTime = System.currentTimeMillis(); ???????? System.out.println(执行时间: + (endTime - beginTime));
您可能关注的文档
- JFreechart完整柱状图.docx
- JK油桶泵厂家十大品牌-上海阳光泵业.docx
- jmeter开发java请求总结.docx
- jQueryEasyUI使用总结.doc
- JIS球阀厂家-上海嘉德阀门.doc
- jsp与javascript之间值的交互.doc
- js中的boolean原始类型和Boolean引用类型.docx
- JS中数组Array的用法.doc
- js各种验证文本框输入格式.doc
- js实现php函数urlencode.doc
- GB/T 42818.2-2026认知无障碍 第2部分:报告.pdf
- 中国国家标准 GB/T 47116-2026地下采矿机械 工作面移动式采掘机械 采煤机和犁式系统的安全要求.pdf
- 《GB/T 47116-2026地下采矿机械 工作面移动式采掘机械 采煤机和犁式系统的安全要求》.pdf
- 中国国家标准 GB/T 42818.2-2026认知无障碍 第2部分:报告.pdf
- 《GB/T 42818.2-2026认知无障碍 第2部分:报告》.pdf
- 《GB/T 27664.1-2026无损检测仪器 超声检测设备的性能与检验 第1部分:仪器》.pdf
- 中国国家标准 GB/T 27664.1-2026无损检测仪器 超声检测设备的性能与检验 第1部分:仪器.pdf
- GB/T 27664.1-2026无损检测仪器 超声检测设备的性能与检验 第1部分:仪器.pdf
- GB/T 45305.5-2026声学 建筑构件隔声的实验室测量 第5部分:测试设施和设备的要求.pdf
- 中国国家标准 GB/T 45305.5-2026声学 建筑构件隔声的实验室测量 第5部分:测试设施和设备的要求.pdf
原创力文档

文档评论(0)