前面重点说了String包装类,String是一个不可变的字符串,下面重点讲下可变字符串StringBuffer
一、StringBuffer(重点)
线程安全,可变的字符序列
其操作主要分为增删改查和其他
1.1增
- 字符串不可变,但放入StringBuffer则可变
- 增:
尾部增加append(String),
头部/中部增加insert(开始位置, String)
public class Demo01 {
public static void main(String[] args) {
String str = "asdzxc";
StringBuffer sb = new StringBuffer(str);
//尾部增加
sb.append("你好");
System.out.println(sb); //asdzxc你好
//头部增加
sb.insert(0,"头部");
System.out.println(sb); //头部asdzxc你好
//中间增加
sb.insert(4,"中间");
System.out.println(sb); //头部as中间dzxc你好
}
}
结果:
asdzxc你好
头部asdzxc你好
头部as中间dzxc你好
1.2删
- 删单个:deleteCharAt(index); 删除对应的索引值元素
- 删多个:delete(start, end) 左闭右开
public class Demo02 {
public static void main(String[] args) {
String str = "你好,HelloWorld";
StringBuffer sb = new StringBuffer(str);
//删除单个元素
sb.deleteCharAt(1); //对应下来是“”"好"
System.out.println(sb); //你,HelloWorld
//删除多个元素
sb.delete(7,sb.length()); //sb的长度
System.out.println(sb); //你,Hello
}
}
结果:
你,HelloWorld
你,Hello
1.3改
replace
bs.repalce(strat, end, str),改的范围,左闭右开
public class Demo03 {
public static void main(String[] args) {
String str = "asdqweaasdzczaaaAA";
StringBuffer sb = new StringBuffer(str);
//replace
sb.replace(0,5,"你好");
System.out.println(sb);
}
}
结果:
你好eaasdzczaaaAA
修改单个元素只需要将start和end写成相同的索引值就好了
1.4 查
indexOf() 第一个出现的元素的索引值
lastIndexOf() 最后一个出现的元素的索引值
public class Demo04 {
public static void main(String[] args) {
String str = "你好sdqwezcxz啊";
StringBuffer sb = new StringBuffer(str);
//inderOf
int i = sb.indexOf("s");
System.out.println(i);
//lastIndexOf()
int i1 = sb.lastIndexOf("z");
System.out.println(i1);
}
}
结果:
2
10
其他功能
substring切片
substring(start) 开始start对应索引的值到最后
sunstring(start, end)开始start值到end值
public class Demo05 {
public static void main(String[] args) {
String str = "asdqweq$csdf";
StringBuffer sb = new StringBuffer(str);
//substring(start)
String test = sb.substring(5);
System.out.println(test); //eq$csdf
//substring(start,end)
String test2 = sb.substring(5, 9);
System.out.println(test2); //eq$c
}
}
结果:
eq$csdf
eq$c
reverse反转
sb.reverse()
public class Demo05 {
public static void main(String[] args) {
String str = "asdqweq$csdf";
StringBuffer sb = new StringBuffer(str);
//reverse
System.out.println(sb.reverse());
}
}
结果:
fdsc$qewqdsa
更多的方法需要读者去查jdk了
一般来说,我们用的更多的是StringBuffer的可变长这一属性,常常用来增加的元素,其他大部分都和String原生类差不多