String:字符串类型。
String最终指向常量池,字符串常量池。
String 对象一旦创建不可改变。
String底层为一个不可以改变的char数组。
StringBuffer:为字符串缓冲区。字符串类型。
StringBuilder和StringBuffer是兄弟类。方法都一样。都是字符串缓冲区。
StringBuffer出现在JDK1.0版本。方法全部为同步方法,线程安全。效率低。
StringBuilder出现JDK1.5版本。方法不同步。线程不安全。效率高。
public class StringBufferDemo {
public static void main(String[] args) {
/*
* StringBuffer的构造方法
* 1.new StringBuffer():
* 相当于底层创建了一个长度为16的char类型数组。16就为他的缓冲区
* 2.new StringBuffer(int capacity):
* 创建了一个长度为capacity的字符串缓冲区。基本不用。
* 3.new StringBuffer(Charsequence seq)
* new StringBuffer(String str):
* 传入字符串,作为该对象的字符串初始化。缓冲区长度为16
* 整个容器的长度为字符串长度+16
*/
StringBuffer sb1 = new StringBuffer();
StringBuffer sb2 = new StringBuffer(10);
StringBuffer sb3 = new StringBuffer("abc");
System.out.println(sb3);//abc
/*
* StringBuffer是一个容器。
* 可以添加 任何类型,但是最终以StringBuffer类型存在。都为字符串
* 增删改查
* StringBuffer | append(所有类型):连接,贴上
* 返回自己本身。
* 在末尾添加参数。
*/
StringBuffer s = sb3.append(true);
System.out.println(s);//abctrue
System.out.println(sb3);//abctrue
//方法的联动调用。
sb3.append(3.14).append("哈哈哈").append(false);
System.out.println(sb3);//abctrue3.14哈哈哈false
/*
* 按下标添加
* StringBuffer | insert(int offset,所有类型)
* 按下标添加内容,返回自己本身
*/
//abctrue3.14哈哈哈false
sb3.insert(1, "AA");
System.out.println(sb3);//aAAbctrue3.14哈哈哈false
sb3.insert(1, "BB").insert(1, "CC");
System.out.println(sb3);//aCCBBAAbctrue3.14哈哈哈false
/*
* int | length():获得该字符串中字符的个数
*/
int length = sb3.length();
System.out.println(length);//25
/*
* StringBuffer | replace(int start,int end,String str):
* 把下标从start开始 到end结束替换为str
* 保头不保尾,替换的字符个数为 end - start个
*/
sb3.replace(1, 10, "XXYYZZ");
System.out.println(sb3);//aXXYYZZrue3.14哈哈哈false
/*
* StringBuffer | deleteCharAt(int index)
* 删除下标为index 的字符
*/
sb3.deleteCharAt(1);
System.out.println(sb3);aXYYZZrue3.14哈哈哈false
/*
* delete(int start,int end)
* 从下标为start开始到end结束全部删除
* 保头不保尾,删除的字符的个数为end - start
*/
sb3.delete(1, 11);
System.out.println(sb3);//a14哈哈哈false
/*
* reverse():反转
*/
sb3.reverse();
System.out.println(sb3);//eslaf哈哈哈41a
/*
* setCharAt(int index,char ch);
* 把下标为index的字符替换为ch
*/
sb3.setCharAt(1, 'A');//eslaf哈哈哈41a
System.out.println(sb3);//eAlaf哈哈哈41a
/*
* setLength(int newLength);
* 重新设置字符的个数
*/
sb3.setLength(6);
System.out.println(sb3);//eAlaf哈
/*
* 如何清空容器:
*/
//1.长度设置为0
//2.delete(0,sb3.length())
}
}