本文原创文章,转载注明出处,博客地址 https://segmentfault.com/u/to... 第一时间看后续精彩文章。觉得好的话,顺手分享到朋友圈吧,感谢支持。
笔者经常忘记三者之间的区别,下面自己总结一番,画一个表格来展示
Item | "+"区别 | 多线程 | 性能 | 使用场景 | 优化 |
---|---|---|---|---|---|
String | 不可变类,重新创建字符串 | 不安全 | 拼接时,性能差 | 操作少量数据,字符串不变时 | 无 |
StringBuilder | 可变类,原字符串基础上生成字符串 | 不安全 | 性能最好(比StringBuffer高10%-15%) | 单线程操作大量数据(方法内部,用完回收) | 尽可能指定容量(默认:16,不超过16个字符不用指定),不指定显著降低性能 |
StringBuffer | 可变类,原字符串基础上生成字符串 | 安全 | 性能好 | 主要用在全局变量中,多线程下安全 | 同上 |
在现实的模块化编程中,负责某一模块的程序员不一定能清晰的判断该模块是否会放入多线程的环境中运行,除非确定系统的瓶颈是在StringBuffer上,并且确定你的模块不会运行在多线程模式下,才可以采用StringBuilder,否则还是用StringBuffer
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70349.html
摘要:和它们都是可变的字符串,不过它们之间的区别是初中级面试出现几率十分高的一道题。区别线程安全线程安全,线程不安全。区别性能既然是线程安全的,它的所有公开方法都是同步的,是没有对方法加锁同步的,所以毫无疑问,的性能要远大于。 StringBuffer 和 StringBuilder 它们都是可变的字符串,不过它们之间的区别是 Java 初中级面试出现几率十分高的一道题。这么简单的一道题,栈...
摘要:与类基本相同,都是可变字符换字符串序列,不同点是是线程安全的,是线程不安全的。和区别在大部分情况下是线程安全的可变字符序列。在程序中可将字符串缓冲区安全地用于多线程。 转载自飘过的小牛 我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一、定义 showImg(/...
摘要:与都继承自类,在中也是使用字符数组保存字符串,,这两种对象都是可变的。采用字节码的好处语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。 String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性...
摘要:如果对于经常改变内容的字符串,使用效率高,但是它只适用于单线程的场景,在多线程场景下,容易导致数据不一致的现象出现。多线程场景下,要使用。在大部分情况下,线程安全的可变字符序列。可将字符串缓冲区安全地用于多个线程。 本人博客 http://www.cnblogs.com/runfor... 总结: 1.String是字符串常量,StringBuffer是线程安全的字符串变量,Stri...
摘要:所以如果要进行的操作是多线程的,那么就要使用,但是在单线程的情况下,还是建议使用速度比较快的。总结一下适用于少量的字符串操作的情况适用于单线程下在字符缓冲区进行大量操作的情况适用多线程下在字符缓冲区进行大量操作的情况 [TOC] 原文链接:[https://www.cnblogs.com/su-fe...]: 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面 1、首先说...
阅读 3022·2021-09-22 14:59
阅读 1863·2021-09-22 10:02
阅读 2107·2021-09-04 16:48
阅读 2259·2019-08-30 15:53
阅读 2964·2019-08-30 11:27
阅读 3401·2019-08-29 18:35
阅读 959·2019-08-29 17:07
阅读 2668·2019-08-29 13:27