Java-StringBuffer和StringBuilder的区别
原创约 1228 字大约 4 分钟...
122-Java-StringBuffer和StringBuilder的区别.md
注意
本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。
- 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 参数的字符串表示形式插入此字符序列中 |
- 想要判断两个StringBuffer变量的内容是否相等,应先用toString()将他们转换成String对象。
- 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的区别 知识点的整理与总结的全部内容,另附源码
Powered by Waline v2.15.4