String一旦赋值或实例化后就不可更改,如果赋予新值将会重新开辟内存地址进行存储。
而StringBuffer类使用append和insert等方法改变字符串值时只是在原有对象存储的内存地址上进行连续操作,减少了资源的开销。
因此我们得出结论:当需要进行频繁修改字符串的操作时先建立StringBuffer类对象进行操作,将最后结果转化成String类对象返回,这样效率会高很多。
关于String与StringBuffer的使用在各大网站都有说明了,因为String对象一旦创建是不能改变的,总的来说StringBuffer比String在效率上的优越的。
如果要对一个字符串进行多次连接操作,大多数情况下,初学者会使用“+”,而程序员会选用StringBuffer的append方法。
不过,这里还要介绍一种StringBuilder。在Thinking in Java书中也着重推荐了这个类,这个类在有些时候比StringBuffer运行更快。
首先是要区别他们两个:
StringBuffer是线程安全的
StringBuilder是线程不安全的
很明显,StringBuffer的系统开销要大,所以如果我们只有一个单线程,考虑速度的话,StringBuilder更好。
那为什么我们很少见到StringBuilder呢?原因很简单,因为我们有时候很难确定我们创建的系统会不会是多线程的,如果考虑到以后扩展的可能性,则更难确定,所以我们更愿意使用StringBuffer,因为它是线程安全的,不用担心以后扩展。
分享到:
相关推荐
它们与String类类似,但是不同之处在于,StringBuffer和StringBuilder可以修改字符串内容,而String对象是不可变的; StringBuffer和StringBuilder类的用法基本相同,但StringBuilder类的效率更高,因为它不是线程...
StringBuilders 概述 建立String的简单类型。 用法如下: using StringBuilders sb = StringBuilder () append! (sb, " First string " ) append! (sb, " Second string " ) s = String (sb) 与使用IOBuffer相比...
88. String和StringBuffer、StringBuilder的区别是什么?String为什么是不可 变的 可变性 String类中使用字符数组保存字符串,private final char value[],所以string对象是不可变 的。StringBuilder与...
StringBuffer 和 StringBuilder 也是使用字符数组保存字符,但这两种对象都是可变的,对字符串进行 append 操作,不会产生新的对象。它们的区别是:StringBuffer 对方法加了同步锁,是线程安全的,而 StringBuilder ...
基于java tcp socket通信的拆包和装包源码 关于Java基础知识, JVM, 多线程, 计算机网络, ...String使用"+"拼接快还是使用StringBuilder.append()快? 引用类型为null, 能否找到其所属的静态类型? sw
List<String> temp = list(new StringBuilder(base).deleteCharAt(i).toString(),buff+base.charAt(i)); result.addAll(temp); } return result; } } ++++++++++++++++++++++++++++++++++++++++++++++++...
StringBuilder sb = new StringBuilder(); for (int i = 0; i ; i++) { sb.append((char)Integer.parseInt(split[i])); } return sb.toString(); } //接收String sb1并对字符串的联合处理 public static String...
StringBuilder sb = new StringBuilder(); sb.append("--"); sb.append(BOUNDARY); sb.append("\r\n"); sb.append("Content-Disposition:form-data;name=\"file\";filename=\""+file.getName()+"\"\r\n"); sb....
2.18 String和StringBuffer的效率对比 38 2.19 StringBuilder类 39 2.20 总结 39 2.21 强调一下编程风格 40 3 Java类与对象 42 3.1 Java类的定义及其实例化 42 3.2 构造方法 42 3.3 创建对象 43 3.4 访问成员变量和...
* 它可以通过抽象类 AbstractStringBuilder 和 StringBuilder 实现字符串的追加和删除操作。 AbstractStringBuilder 是一个可变的字符序列,具有以下特点: * 它是一个 char 数组,用于存储字符串的值。 * 它可以...