高级java工程师 发表于 2013-1-19 04:14:03

String和Stringbuffer和StringBuilder去别?

StringBuffer类

String和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据。   String类是字符串常量,是不可更改的常量。而StringBuffer是字符串变量,它的对象是可以扩充和修改的。   StringBuffer类的构造函数   public StringBuffer()   创建一个空的StringBuffer类的对象。   public StringBuffer( int length )   创建一个长度为 参数length 的StringBuffer类的对象。   注意:如果参数length小于0,将触发NegativeArraySizeException异常。   public StringBuffer( String str )   用一个已存在的字符串常量来创建StringBuffer类的对象。

StringBuffer方法

 public String toString()   转换为String类对象并返回。由于大多数类中关于显示的方法的参数多为String类的对象,所以经常要将StringBuffer类的对象转换为String类的对象,再将它的值显示出来。用法如:   StringBuffer sb=new StringBuffer("How are you?");   Label l1=new Label(sb.toString());   (注:声明一个标签对象l1,l1上的内容为How are you?)   public StringBuffer append( boolean b )   public StringBuffer append( char c )   public StringBuffer append( int i)   public StringBuffer append( long l )   public StringBuffer append( float f )   public StringBuffer append( double d )   以上6个方法可将boolean、char、int、long、float和double 6种类型的变量追加到StringBuffer类的对象的后面。用法如:   double d=123.4567;   StringBuffer sb=new StringBuffer();   sb.append(true);   sb.append('c').append(d).append(99);   (注:sb的值为truec123.456799)   public StringBuffer append( String str )   将字符串常量str追加到StringBuffer类的对象的后面。   public StringBuffer append( char str[] )   将字符数组str追加到StringBuffer类的对象的后面。   public StringBuffer append   ( char str[], int offset, int len )   将字符数组str,从第offset个开始取len个字符,追加到StringBuffer类的对象的后面。   public StringBuffer insert   ( int offset, boolean b )   public StringBuffer insert   ( int offset, char c )   public StringBuffer insert   ( int offset, int i )   public StringBuffer insert   ( int offset, long l )   public StringBuffer insert   ( int offset, float f )   public StringBuffer insert   ( int offset, double d )   public StringBuffer insert   ( int offset, String str )   public StringBuffer insert   ( int offset, char str[] )   将boolean、char、int、long、float、double类型的变量、String类的对象或字符数组插入到StringBuffer类的对象中的第offset个位置。用法如:   StringBuffer sb=new StringBuffer("abfg");   sb.insert(2,"cde");   (注:sb的值为abcdefg)   public int length()   这个方法返回字符串变量的长度,用法与String类的length方法类似。   StringBuffer sbf=new StringBuffer();   System.out.println(sbf.capacity());   System.out.println(sbf.length());   输出 16 ,0.

默认构造器是由系统自动分配容量,默认是16个字符。由于没有赋值,所以缓冲对象的长度就是0.


StringBuffer sb =newStringBuffer(100)//创建一个构造器大小构造器
CharAt()方法      返回单个字符串
setCharAt()方法对单个字符串替换
reverse()方法    可以倒置字符串的内容



StringBuilder
来源:
StringBuilder来源于jdk1.5及以后的版本,jdk1.4(包括1.4)之前是不存在该类的。请注意不要在jdk1.4的环境里使用,否则会出错。

StringBuilder介绍
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。 在 StringBuilder 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。 例如,如果 z 引用一个当前内容为“start”的字符串生成器对象,则该方法调用 z.append("le") 将使字符串生成器包含“startle”,而 z.insert(4, "le") 将更改字符串生成器,使之包含“starlet”。 通常,如果 sb 引用 StringBuilder 的实例,则 sb.append(x) 和 sb.insert(sb.length(), x) 具有相同的效果。 每个字符串生成器都有一定的容量。只要字符串生成器所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区。如果内部缓冲区溢出,则此容量自动增大。 将 StringBuilder 的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用 StringBuffer
页: [1]
查看完整版本: String和Stringbuffer和StringBuilder去别?