Java-StringBuffer和StringBuilder的区别

涎涎原创约 1228 字大约 4 分钟...JavaJava

122-Java-StringBuffer和StringBuilder的区别.mdopen in new window

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

  • StringBuffer类
    • StringBuffer类用于内容可以改变的字符串
    • 可以使用StringBuffer来对字符串的内容进行动态操作,不会产生额外的对象
  • StringBuffer对象的创建
    • 构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符
StringBuffer 变量名 = new StringBuffer () ;
  • 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer 变量名 = new StringBuffer (int capacity ) ;
  • 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
StringBuffer 变量名 = new StringBuffer (String value) ;
  • StringBuffer类中常用的方法
方法含义
int capacity( )返回当前容量
int length( )返回长度(字符数)
StringBuffer reverse( )将此字符序列用其反转形式取代
void setCharAt(int,char)将给定索引处的字符设置为 ch
StringBuffer delete(int begin,int end)移除此序列的子字符串中的字符
char charAt(int)返回此序列中指定索引处的 char 值
String toString( )将StringBuffer对象转换成相应的String
StringBuffer append(String str)将指定的字符串追加到此字符序列
StringBuffer append(int num)将 int 参数的字符串表示形式追加到此序列
StringBuffer append(Object o)追加 Object 参数的字符串表示形式
StringBuffer insert(int index,String str)将字符串插入此字符序列中
StringBuffer insert(int index,char ch)将字符插入此字符序列中
StringBuffer insert(int index,Object o)将 Object 参数的字符串表示形式插入此字符序列中
  1. 想要判断两个StringBuffer变量的内容是否相等,应先用toString()将他们转换成String对象。
  2. StrigBuffer节省内存开销
  • StringBuilder类
    • StringBuilder类是一个可变的字符序列。
    • JDK自从5.0版本后引入。
    • StringBuilder类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候 。
  • StringBuilder对象的创建
    • 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。
StringBuilder 变量名 = new StringBuilder () ;
  • 构造一个不带任何字符的字符串生成器,其初始容量由 capacity 参数指定。
StringBuilder 变量名 = new StringBuilder (int capacity ) ;
  • 构造一个字符串生成器,并初始化为指定的字符串内容
StringBuilder 变量名 = new StringBuilder(String str) ;
  • StringBuilder类中常用的方法
方法含义
int capacity( )返回当前容量
int length( )返回长度(字符数)
StringBuilder reverse( )将此字符序列用其反转形式取代
void setCharAt(int index,char ch)将给定索引index处的字符设置为 ch
StringBuilder delete(int begin,int end)移除此序列的子字符串中的字符
char charAt(int index)返回此序列中指定索引处的 char 值
String toString( )将StringBuilder对象转换成相应的String
StringBuilder append(String str)将指定的字符串追加到此字符序列
StringBuilder append(int num)将 int 参数的字符串表示形式追加到此序列
StringBuilder append(Object o)追加 Object 参数的字符串表示形式
StringBuilder insert(int index,String str)将字符串插入此字符序列中
StringBuilder insert(int index,char ch)将字符插入此字符序列中
StringBuilder insert(int index,Object o)将 Object 参数的字符串表示形式插入此字符序列中
  • String类与StringBuilder类的比较

    • Java中定义了String与StringBuffer两个类来封装对字符串的各种操作
    • String类与StringBuffer类都被放到了java.lang包中
    • 两者的主要区别在于
      • String类对象中的内容初始化不可以改变
      • StringBuffer类对象中的内容可以改变
  • StringBuffer类与StringBuilder类的比较

    • StringBuffer和StringBuilder都是长度可变的字符串。
    • 两者的操作基本相同。
    • 两者的主要区别在于
      • StringBuffer类是线程安全的;
      • StringBuilder类是线程不安全的。
      • StringBuffer在JDK1.0中就有,而StringBuilder是在JDK5.0后才出现的。
      • StringBuilder的一些方法实现要比StringBuffer快些。

示例代码:

package 字符串类;

public class TestStringBuff_StringBuilder {

	public static void main(String[] args) {

		StringBuffer sb1 = new StringBuffer("888sjierijj");//堆区中创建了一个对象
		
		sb1.append(true);
		sb1.append("123".toCharArray());
		sb1.insert(8,'p');//在索引是8的位置插入
		System.out.println(sb1.toString());
		sb1.replace(0,3,"999");//结束索引不包括在内
		System.out.println(sb1.toString());//sjierijjtrue123
		sb1.reverse();
		System.out.println("delete 之前:"+sb1);
		sb1.delete(0, 2);//结束索引不包括在内
		
		System.out.println("delete 之后:"+sb1);//delete 之后:1eurtjjipreijs999
		
		System.out.println(sb1.charAt(5));
		StringBuilder sb2 = new StringBuilder("abc");
	}
}

分割线


相关信息

以上就是我关于 Java-StringBuffer和StringBuilder的区别 知识点的整理与总结的全部内容,另附源码open in new window

上次编辑于:
贡献者: 涎涎
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.4