浏览 3662 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-19
最后修改:2010-05-13
String 类是属于不可变类,任何对String的操作都会引起新的String对象的产生 String a = "a"; //假设a指向地址0x0001 a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。 因此String的操作都是改变赋值地址而不是改变值操作 String S1 = “abc”; For(int I = 0 ; I < 10000 ; I ++) { S1 + = “def”; S1 = “abc”; } 这样操作后,如果GC没有清理,内存中会产生2万个String对象 public class test2 { public static void stringReplace (String text) { text = text.replace('j' , 'i'); } public static void main (String args[]) { String textString = new String ("java"); stringReplace (textString); System.out.print("textString="+textString); //输出Java } } 2. StringBuffer是不可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量 StringBuffer buf=new StringBuffer(); //分配长16字节的字符缓冲区 StringBuffer buf=new StringBuffer(512); //分配长512字节的字符缓冲区 StringBuffer buf=new StringBuffer("this is a test")//在缓冲区中存放了字符串,并在后面预留了16字节的空缓冲区 setCharAt charAt insert append//添加字符串或者char型数组 setLength 小于长度,会截断字符串 substring replace reverse 反转 public void getChars(int srcBegin,//字符串中要复制的第一个字符的索引。 int srcEnd,//字符串中要复制的最后一个字符之后的索引 char[] dst,//目标数组 int dstBegin)//目标数组中的起始偏移量 3. 从 JDK 5.0 开始,为StringBuffer类增添了一个单个线程使用的等价类,即 StringBuilder 。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。 String StringBuffer StringBuilder 对比 1.jdk版本支持 StringBuilder JDK1.5以后版本支持 2.线程安全 StringBuffer 线程安全 StringBuilder 线程不安全 Java.lang.StringBuffer 线程安全的可变字符序列。类似于 String 的字符串缓冲区,但不能修改。可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发 生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。 每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量 自动增大。从 JDK 5.0 开始,为该类增添了一个单个线程使用的等价类,即 StringBuilder 。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。 但是如果将 StringBuilder 的实例用于多个线程是不安全的。需要这样的同步,则建议使用 StringBuffer 。 3.速度 一般情况下,速度从快到慢:StringBuilder>StringBuffer>String.当需要在循环中多次使用字符串拼接时,建 议使用StringBuilder或StringBuffer.当数量级在百万级(这里可能不准确)时,StringBuilder的速度会体现出来. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |