首页 > 其他 > 详细

StringBuffer 和 StringBuilder

时间:2020-05-31 17:56:54      阅读:50      评论:0      收藏:0      [点我收藏+]

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 关键字修饰

  • StringBuilder 线程不安全 所有 的方法都没有 synchronized 关键字修饰

StringBuffer 和 StringBuilder

原文:https://www.cnblogs.com/zachyoung/p/13019457.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!