三、StringBuffer类和StringBuilder类 前面学到过String类有一个重要的特点,那就是String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。那么对于经常要改变值的字符串应该怎样操作呢? 答案就是使用StringBuffer和StringBuilder类,这两个类功能基本相似,区别主要在于StringBuffer类的方法是多线程安全的(多线程的课程在后面会学习到),而StringBuilder不是线程安全的,相比而言StringBuilder类会略微快一点。 1.StringBuffer类 类 String –字符串(String)对象一旦创建,其内容不能再被修改 (read-only) 类 StringBuffer –StringBuffer 对象的内容是可以被修改的 –除了字符的长度之外,还有容量的概念 –通过动态改变容量的大小,加速字符管理 1.1 StringBuffer的构造方法 buf1 = new StringBuffer(); –创建空的StringBuffer对象,初始容量为16字符 buf2 = new StringBuffer( 容量 ); –创建空的StringBuffer对象,指定容量大小 。 buf3 = new StringBuffer( myString ); –创建含有相应字符序列的StringBuffer对象,容量为myString.length() + 16 –实例: StringBuffer b = new StringBuffer("hello"); 1.2 StringBuffer的常用方法 •方法 length() –返回 StringBuffer 的长度 •方法 capacity() –返回StringBuffer 的容量 •方法setLength(int newLength) –增加或减小 StringBuffer 的长度 •方法 charAt(int index) –返回StringBuffer 对象中指定位置的字符 •方法setCharAt(int index, char ch) –设置 StringBuffer对象中指定位置的字符 •方法 getChars(int srcBegin, int srcEnd, Char[] dst, int dstBegin) –将StringBuffer对象中指定的字符子序列,拷贝到指定的字符数组(dst) •方法 reverse() –将StringBuffer 对象中的字符序列按逆序方式排列,可用作字符串倒序 •11种append(…) 方法 –允许数值类型的值添加到StringBuffer对象中 •10 种 insert 方法 –允许将各种数据插到StringBuffer对象的指定位置 •方法 delete(int start, int end) 和 deleteCharAt(int index) –允许删除StringBuffer对象中的指定字符 其中最常用的恐怕就要算append方法和toString方法了,如下示例: publicclass Test{ publicstaticvoid main(String[] args) { StringBuffer buffer = new StringBuffer(); buffer.append("这里"); buffer.append("是"); buffer.append("Java"); buffer.append("私塾"); System.out.println("buffer=="+buffer.toString()); } } 运行结果:buffer==这里是Java私塾 2.StringBuilder类 StringBuilder类是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。 它的功能基本等同于StringBuffer类,就不再赘述了。 publicclass Test{ publicstaticvoid main(String[] args) { StringBuilder builder = new StringBuilder(); builder.append("这里"); builder.append("是"); builder.append("Java"); builder.append("私塾"); System.out.println("buffer=="+builder.toString()); } } 运行结果:builder==这里是Java私塾 Java私塾跟我学系列——JAVA篇 网址:http://www.javass.cn 电话:010-68434236 |