String
添加功能
-
不管任何数据类型都可以被添加到字符缓冲区中:
-
- 如果该类型不是字符串类型 该值 -> 字符串类型
-
- 放入字缓冲区中
public StringBuffer append(String str) //向字符缓冲区中添加字符序列
public StringBuffer insert(int offset,String str)
虽然说,StringBuffer可以自动扩容,但是通常在开发中建议
public StringBuffer(int capacity)
如果在开发中,能有效的预估字符缓冲区所需的长度,因为每一次扩容,其实都比较耗时 - 放入字缓冲区中
public static void main(String[] args) {
//StringBuffer 可以自己根据需要扩容
StringBuffer stringBuffer = new StringBuffer(); //capacity 16
stringBuffer.append("12345678901234567890abc");
String s = stringBuffer.toString();
System.out.println(s);
System.out.println(stringBuffer.capacity());
// 测试尾部追加 append
int i = 10;
stringBuffer.append(i);
System.out.println(stringBuffer.toString());
boolean b = true;
stringBuffer.append(b);
System.out.println(stringBuffer.toString());
// insert
// public StringBuffer insert(int offset,String str)
String s1 = "jiang";
stringBuffer.insert(3, s1);
System.out.println(stringBuffer.toString());
//链式调用 向stringbuffer插入 ‘a’ 1 true
stringBuffer.insert(1, 'a')
.append(1)
.append(false);
System.out.println(stringBuffer.toString());
//我们自己测试自己写的链式调用方法
ChainedCall chainedCall = new ChainedCall();
ChainedCall print = chainedCall.print("123").print(new StringAdd());
System.out.println(print == chainedCall);
}
}
class ChainedCall {
public ChainedCall print(Object o) {
System.out.println(o.toString());
return this;
}
删除功能 替换功能 反转功能
删除功能
public StringBuffer deleteCharAt(int index)
public StringBuffer delete(int start,int end) [start, end)
替换功能
// 用所给字符串,替换掉字符缓冲区中,指定范围的字符串虚列
public StringBuffer replace(int start,int end,String str)
反转功能
public StringBuffer reverse() //反转字符缓冲区中的字符序列
public static void main(String[] args) {
String s = "zhang";
StringBuffer stringBuffer = new StringBuffer(s);
//测试删除字符
//StringBuffer stringBuffer1 = stringBuffer.deleteCharAt(s.length() - 1);
//System.out.println(stringBuffer1.toString());
//测试删除某个[start, end)
//StringBuffer delete = stringBuffer.delete(2, s.length());
//System.out.println(delete.toString());
//替换功能
StringBuffer abcd = stringBuffer.replace(0, 2, "abcd");
System.out.println(abcd.toString());
//测试字符串反转
String str = reverseStr("abcd");
System.out.println(str);
//测试一下
str = "hansh";
StringBuffer stringBuffer1 = new StringBuffer(str);
System.out.println(stringBuffer1.reverse().toString());
String path = "/zs/web/file";
String[] split = path.split("/");
for (int i = 0; i < split.length; i++) {
System.out.println(split[i]);
}
}
public static String reverseStr(String s) {
char[] tmp = new char[s.length()];
int length = s.length();
for (int i = 0; i < length; i++) {
char c = s.charAt(i);
tmp[length - 1 - i] = c;
}
return new String (tmp);
}
截取功能
public String substring(int start)
public String substring(int start,int end) [start, end)
public static void main(String[] args) {
String s = "subString";
StringBuffer stringBuffer = new StringBuffer(s);
System.out.println(stringBuffer.substring(3));
//字符缓冲区中的字符序列是否收到映象
System.out.println(stringBuffer.toString());
//截取指定范围的字符序列 str
System.out.println(stringBuffer.substring(3, 6));
}
StringBuffer
-
线程安全(多线程环境下访问数据的正确性)的 可变 字符序列
-
一个类似于 String 的字符串缓冲区,但可以修改(内容可变)
-
虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的 长度 和 内容
-
构造方法
public StringBuffer()
public StringBuffer(int capacity)
public StringBuffer(String str)//对于StringBuffer -> 自动扩容
public static void main(String[] args) {
//public StringBuffer()
// capacity: 字符缓冲去本身的大小() 16个字符
// length:字符缓冲区中真正包含的字符个数
StringBuffer stringBuffer = new StringBuffer();
System.out.println(stringBuffer.capacity()); //16
System.out.println(stringBuffer.length()); //0
// public StringBuffer(int capacity) 可以指定StringBuffer初始容量
stringBuffer = new StringBuffer(20);
System.out.println(stringBuffer.capacity());
System.out.println(stringBuffer.length());
//public StringBuffer(String str)
stringBuffer = new StringBuffer("helloworld"); //参数字符串长度 + 16
System.out.println(stringBuffer.capacity());
System.out.println(stringBuffer.length());
}