一、String是一个创建就不能改变的字符串,而String Buffer是一个可修改的字符串,在内存上是优于String。
线程安全,可变的字符序列。 字符串缓冲区就像一个String
,但可以修改。 在任何时间点,它包含一些特定的字符序列,但可以通过某些方法调用来更改序列的长度和内容。
字符串缓冲区可以安全地被多个线程使用。 这些方法在必要时进行同步,以便任何特定实例上的所有操作都按照与所涉及的各个线程所执行的方法调用顺序一致的顺序发生。
二、构造方法
StringBuffer sb = new StringBuffer("abcd"); StringBuffer sb1 = new StringBuffer(12); System.out.println(sb.append(123));
三、方法(注意在这有几个与String不同,其余都是相同的。
package 构造方法及常用方法;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//demo1();//构造方法
//demo2();//append方法和insert方法
//demo3();//删除字符串,以及清空字符串
//demo4();//字符串的替换和反转
//demo5();//字符串的截取,注意在这返回值类型是一个String类型的
//demo6();//StringBuffer与String之间的转化
//demo7();//通过StringBuffer反转字符串然后返回给string类型
}
private static void demo7() {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
String str = reverse(s);
System.out.println(str);
}
private static String reverse(String s) {
StringBuffer s1 = new StringBuffer(s);
s1.reverse();
return s1.toString();
}
private static void demo6() {
StringBuffer sb = new StringBuffer("woainiljh");
String s1 = new String(sb);//通过stringBuffer转换为String类型的
System.out.println(s1);
String s2 = sb.toString();//通过toString的方法转换为String类型的
System.out.println(s2);
String s3 = sb.substring(0,sb.length());//通过截取的方式转换为String类型
System.out.println(s3);
}
private static void demo5() {
StringBuffer sb = new StringBuffer("woainiheima");
String s1 = sb.substring(6);//字符串的截取功能
System.out.println(s1);
}
private static void demo4() {
StringBuffer sb = new StringBuffer("woainilanzhou");
StringBuffer s1 = sb.replace(6,sb.length(),"beijing");//替换指定位置的字符串
System.out.println(s1);
sb.reverse();//字符串反转
System.out.println(sb);
}
private static void demo3() {
StringBuffer sb = new StringBuffer("我爱你中国~~~~");
StringBuffer s1 = sb.delete(0,1);
//System.out.println(s1);
StringBuffer s2 = sb.delete(0, sb.length());//清空所有的字符串
System.out.println(s2);
// sb = new StringBuffer();//注意不能用这种方式清空字符串,这个相当于把原来的作为垃圾又重新创建了一个
// System.out.println(sb);
}
private static void demo2() {
StringBuffer sb = new StringBuffer();
System.out.println(sb);
StringBuffer sb1 = sb.append(true);
System.out.println(sb1);
StringBuffer sb2 = sb.append("heima");
System.out.println(sb2);
StringBuffer sb3 = sb.append(123);
System.out.println(sb3);//注意在这就是一个字符串缓冲区,每次添加返回一个新添加的字符串
StringBuffer sb4 = sb.insert(4, "woaini");
System.out.println(sb4);//insert也有很多的重载方法
}
private static void demo1() {
/*
StringBuffer() 构造一个没有字符的字符串缓冲区,初始容量为16个字符。
StringBuffer(int capacity) 构造一个没有字符的字符串缓冲区和指定的初始容量。
StringBuffer(CharSequence seq) 构造一个字符串缓冲区,其中包含与指定的 CharSequence相同的字符。
StringBuffer(String str) 构造一个初始化为指定字符串内容的字符串缓冲区。
*/
StringBuffer sb = new StringBuffer("abcd");
StringBuffer sb1 = new StringBuffer(12);
System.out.println(sb.append(123));
}
}