首页IT科技stringbuilder类的方法(StringBuilder类)

stringbuilder类的方法(StringBuilder类)

时间2025-07-29 01:02:39分类IT科技浏览4912
导读:StringBuilder类 一、结构剖析 一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步(StringBuilder 不是线程安全的)。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。如果可能,建议优先采...

StringBuilder类

一             、结构剖析

一个可变的字符序列             。此类提供一个与 StringBuffer 兼容的 API              ,但不保证同步(StringBuilder 不是线程安全的)                     。该类被设计用作 StringBuffer 的一个简易替换                    ,用在字符串缓冲区被单个线程使用的时候       。如果可能       ,建议优先采用该类       ,因为在大多数实现中                    ,它比 StringBuffer要快             。 在 StringBuilder 上的主要操作是 append 和 insert 方法             ,可重载这些方法       ,以接受任意类型的数据                    。 //StringBuilder类细节: public class StringBuilder01 { public static void main(String[] args) { //1. StringBuilder 继承 AbstractStringBuilder 类 //2. 实现了 Serializable 接口                     ,说明StringBuilder对象是可以串行化(对象可以网络传输             ,可以保存文件) //3. StringBuilder 是 final类,不能被继承 //4. StringBuilder 对象字符序列仍然是存放在其父类 AbstractStringBuilder 的 char[] value; //5. StringBuilder 的方法                     ,没有做互斥的处理                    ,即没有synchronized 关键字,因此在单线程的情况下使用StringBuilder StringBuilder stringBuilder = new StringBuilder(); } }

二                     、StringBuilder常用方法

StringBuilder 和 StringBuffer 均代表可变的字符序列              ,方法是一样的                    ,所以使用和StringBuffer一样       。

三       、StringBuilder应用

String             、StringBuffer 和 StringBuilder 的比较

StringBuilder 和 StringBuffer 非常类似       ,均代表可变的字符序列              ,而且方法也一样

String:不可变字符序列                    ,效率低       ,但是复用率高       。

StringBuffer:可变字符序列       ,效率较高(增删)                    ,线程安全                    。

StringBuilder:可变字符序列             ,效率最高       ,线程不安全              。

String使用注意说明:

String s = "a";:创建了一个字符串

s += "b";:实际上原来的 "a" 字符串对象已经丢弃了                     ,现在又产生了一个字符串 s + "b" (也就是"ab")       。如果多次执行这些改变内容的操作             ,会导致大量副本字符串对象留在内存中,降低效率                    。如果这样的操作放在循环中                     ,会极大影响程序的性能              。结论:如果我们对 String 做大量的修改                    ,不要使用String。

String                    、StringBuffer和StringBuilder的效率测试

效率:StringBuilder > StringBuffer > String

public class StringVsStringBufferVsStringBuilder { public static void main(String[] args) { long startTime = 0L; long endTime = 0L; StringBuffer buffer = new StringBuffer(""); startTime = System.currentTimeMillis(); for (int i = 0; i < 80000; i++) {//StringBuffer buffer.append(String.valueOf(i)); } endTime = System.currentTimeMillis(); System.out.println("StringBuffer的执行时间:" + (endTime - startTime)); StringBuilder builder = new StringBuilder(""); startTime = System.currentTimeMillis(); for (int i = 0; i < 80000; i++) {//StringBuilder builder.append(String.valueOf(i)); } endTime = System.currentTimeMillis(); System.out.println("StringBuiler的执行时间:" + (endTime - startTime)); String text = ""; startTime = System.currentTimeMillis(); for (int i = 0; i < 80000; i++) {//StringBuilder text = text + i; } endTime = System.currentTimeMillis(); System.out.println("String的执行时间:" + (endTime - startTime)); } } //运行结果: //StringBuffer的执行时间:12 //StringBuiler的执行时间:5 //String的执行时间:3695

String       、StringBuffer和StringBuilder的选择

使用原则,结论:

如果字符串存在大量的修改操作              ,一般使用 StringBuffer 或 StringBuilder 如果字符串存在大量的修改操作                    ,并且在单线程的情况       ,使用StringBuileder 如果字符串存在大量的修改操作              ,并且在多线程的情况                    ,使用StringBuffer 如果我们字符串很少修改       ,被多个对象引用       ,使用String                    ,比如配置信息等

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
Centos7安装ntfs-3g(centos 安装 ntpdate 并同步时间 | 麦冰棍) gg和gn(GTK、GDK、GLIB三者的关系 阿堂的专栏 博客频道 CSDN.NET)