StringBuffer 和 StringBuilder
1、共同点
1.1、实现接口
-
Serializable
-
Comparable<StringBuffer>
-
CharSequence
1.2、继承 java.lang.AbstractStringBuilder 类
该类是 java.lang 包私有的
2、StringBuffer
1、字符串( character strings ) 缓冲区 ( buffer ): string buffer 根据 Java 中类的命名规范为 StringBuffer
2、与 String 类的实例一样 StringBuffer 类的实例 也用于封装 字符串( character strings )
3、StringBuffer 类中定义了大量的用来操作 字符缓冲区的 方法 append / insert / replace / deleteCharAt /delete
4、与 String 类的实例 不可变不同 StringBuffer 类的实例是可变的 因此每次操作都会影响 StringBuffer 实例
package CharSequence;
/**
* 1、字符串( character strings ) 缓冲区 ( buffer ): string buffer 根据 Java 中类的命名规范为 StringBuffer
* 2、与 String 类的实例一样 StringBuffer 类的实例 也用于封装 字符串( character strings )
* 3、StringBuffer 类中定义了大量的用来操作 字符缓冲区的 方法 append / insert / replace / deleteCharAt /delete
* 4、与 String 类的实例 不可变不同 StringBuffer 类的实例是可变的 因此每次操作都会影响 StringBuffer 实例
*
* */
public class StringBufferTest1 {
public static void main(String[] args) {
// 使用 StringBuffer 无参数构造创建一个 空的 字符串缓冲区
StringBuffer buffer = new StringBuffer();
System.out.println( "length : " + buffer.length() + " , capacity : " + buffer.capacity() + " , toString : " + buffer );
buffer.append( false ); // 在 字符缓冲区中 追加内容
System.out.println( "length : " + buffer.length() + " , capacity : " + buffer.capacity() + " , toString : " + buffer );
buffer.insert( 0 , "hello," );
System.out.println( "length : " + buffer.length() + " , capacity : " + buffer.capacity() + " , toString : " + buffer );
buffer.replace( 5 , 6 , "," );
System.out.println( "length : " + buffer.length() + " , capacity : " + buffer.capacity() + " , toString : " + buffer );
int index = buffer.indexOf( "," );
buffer.deleteCharAt( index );
System.out.println( "length : " + buffer.length() + " , capacity : " + buffer.capacity() + " , toString : " + buffer );
buffer.delete( 5 , 10 );
System.out.println( "length : " + buffer.length() + " , capacity : " + buffer.capacity() + " , toString : " + buffer );
}
}
3、StringBuilder
1、StringBuilder 类的设计 与 StringBuffer 基本一致 ( 父类 、实现接口 、构造 、方法 )
2、StringBuilder 类中的 方法都没有 synchronized 修饰的, 而 StringBuffer 中所有 public 方法都是有 synchronized 修饰的
3、不论是 StringBuilder 还是 StringBuffer ,都可以使用 setLength 方法有效字符数 、通过 trimToSize 来调整容量
package CharSequence;
/**
* 1、StringBuilder 类的设计 与 StringBuffer 基本一致 ( 父类 、实现接口 、构造 、方法 )
* 2、StringBuilder 类中的 方法都没有 synchronized 修饰的,
* 而 StringBuffer 中所有 public 方法都是有 synchronized 修饰的
* 3、不论是 StringBuilder 还是 StringBuffer ,都可以使用 setLength 方法有效字符数 、通过 trimToSize 来调整容量
*/
public class StringBuilderTest {
public static void main(String[] args) {
StringBuilder builder = new StringBuilder( "hello" );
System.out.println( "length : " + builder.length() + " , capacity : " + builder.capacity() + " , toString : " + builder );
builder.setLength( 0 ); // 设置 length 为 零 ( 有效字符数 为 零 )
System.out.println( "length : " + builder.length() + " , capacity : " + builder.capacity() + " , toString : " + builder );
builder.append( true );
System.out.println( "length : " + builder.length() + " , capacity : " + builder.capacity() + " , toString : " + builder );
builder.trimToSize();
System.out.println( "length : " + builder.length() + " , capacity : " + builder.capacity() + " , toString : " + builder );
}
}
4、StringBuffer 和 StringBuilder 区别
-
StringBuffer 线程安全 所有 public 修饰的方法都有 synchronized 关键字修饰
-

浙公网安备 33010602011771号