关于Java中String,StringBuilder以及StringBuffer的区别简单汇总

xiaoxiao2023-03-22  68

都是百度回来的结果,原创是谁就不清楚了,个人整理一下,谨以自勉。 因为大部分内容个人未经证实,所以强烈不建议转载! 记住,无图无真相! 容量: 1.String类似不可变的。 2.StringBuilder以及StringBuffer则是可变长度的。 ——————————————————————————————————————-—— 分类: 1.String,因为没查MSDN及API,因此不清楚 .Net及Java中的功能区别,但有人评价“.Net的String类的强大不是其他String类可比的” 2.StringBuilder是一个.Net的类,它就是用来完成Java的StringBuffer功能的类。强调其用了Builder模式,其实聚合了一个Buffer来完成这个事情,那么这个类主要是退居为一个服务类型。 3.StringBuffer是Java类,强调出了这个类的实现方式 ——————————————————————————————————————-—— 线性安全: 1.StringBuilder 线性不安全 2.StringBuffer 线性安全 ——————————————————————————————————————-—— 性能: 直接转了一篇东东,仅作参考!!!!!! !!!!!!!!!!!!!!!!仅作参考仅作参考!!!!!!!!!!!!!!!! 通过非官方试验测试,StringBuilder和StringBuffer的测试总结如下: 1. 为了获得更好的性能,在构造 StirngBuffer 或 StirngBuilder 时应尽可能指定它的容量。当然,如果你操作的字符串长度不超过 16 个字符就不用了。 2. 相同情况下使用 StirngBuilder 相比使用 StringBuffer 仅能获得 10%~15% 左右的性能提升,但却要冒多线程不安全的风险。而在现实的模块化编程中,负责某一模块的程序员不一定能清晰地判断该模块是否会放入多线程的环境中运行,因此:除非你能确定你的系统的瓶颈是在 StringBuffer 上,并且确定你的模块不会运行在多线程模式下,否则还是用 StringBuffer 吧 J 3. 用好现有的类比引入新的类更重要。很多程序员在使用 StringBuffer 时是不指定其容量的(至少我见到的情况是这样),如果这样的习惯带入 StringBuilder 的使用中,你将只能获得 10 %左右的性能提升(不要忘了,你可要冒多线程的风险噢);但如果你使用指定容量的 StringBuffer ,你将马上获得 45% 左右的性能提升,甚至比不使用指定容量的 StirngBuilder 都快 30% 左右。 !!!!!!!!!!!!!!!!仅作参考仅作参考!!!!!!!!!!!!!!!!
转载请注明原文地址: https://www.6miu.com/read-4987514.html

最新回复(0)