StringBuffer(字符缓冲区)与StringBuilding
1.介绍:
1.都是字符缓冲区有什么区别呢?
2.都是一个 可变的序列(操作的是一个原字符串)
3.StringBuffer 线程安全效率低(耗费系统资源)
4.StringBuilding 线程不安全 效率高(相对于StringBuffer耗费资源)
5.使用方法一样
6.String 是不可变的 线程不安全的
7.stringBuffer 是可变的 操作的是对象本身
2.无参创建StringBuffer
// 创建一个StringBuffer(拼接字符串)
StringBuffer stringBuffer = new StringBuffer()
// 获取容量(理论) 默认值 16
System.out.println(stringBuffer.capacity())
// 获取长度
System.out.println(stringBuffer.length())
// 转化为字符串
System.out.println(stringBuffer.toString())
// 拼接字符串(操作的是原对象)
stringBuffer.append("wanglong")
// 如果直接打印对象 系统会帮你调用toString方法
System.out.println(stringBuffer)
运行结果
16
0
空格
wanglong
3.StringBuffer的 字符串 替换 插入 提取字符 操作
1.在第三位置插入字符串true
StringBuffer stringBuffer = new StringBuffer("wanglong");
stringBuffer.insert(3, true);
System.out.println(stringBuffer);
2.将角标位置2的字符替换为c
stringBuffer.setCharAt(2, 'c');
System.out.println(stringBuffer);
3.提取字符串角标位置7的字符
char c = stringBuffer.charAt(7);
System.out.println(c);
运行结果:
wantrueglong
wactrueglong
g
注释:
1.插入boolean类型 就相当于把 true和false当字符串插入
2.插入字符和字符修改的时候 不能越界
4.StringBuffer转字符数组
1.思路:
先转成字符串 然后 再变 字符数组
2.代码:
StringBuffer stringBuffer = new StringBuffer("wanglong");
char[] array = stringBuffer.toString().toCharArray();
System.out.println(array[1]);
运行结果: a
5.StringBuffer 字符 拼接 删除 与反转
1.创建StringBuffer对象
StringBuffer stringBuffer = new StringBuffer("wanglong")
2.拼接555
stringBuffer.append("555")
3.删除角标位置1到五的字符
stringBuffer.delete(1, 5)
System.out.println(stringBuffer)
4.删除角标位置2 的字符
stringBuffer.deleteCharAt(2)
System.out.println(stringBuffer)
5.反转字符串
stringBuffer.reverse()
System.out.println(stringBuffer)
运行结果:
wong555
wog555
555gow
注释:删除范围删头不删尾
注意:开始坐标不能越界 结束坐标越界 系统当清空处理
6.String转型StringBuffer进行反转
System.out.println("请输入一个字符串");
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
StringBuffer stringBuffer = new StringBuffer(string);
stringBuffer.reverse();
System.out.println(stringBuffer.toString());
输入:123
运行结果:321
练习代码:
方法1:
int[] array = new int[]{1,2,3,4};
String string = new String("[");
for(int i = 0; i < array.length; i++) {
string = string + array[i];
if(i != array.length - 1) {
string = string + ",";
}
}
string = string + "]";
System.out.println(string);
方法2:
int[] array = new int[]{1,2,3,4};
StringBuffer stringBuffer = new StringBuffer("[");
for(int i = 0; i < array.length; i++) {
if(i != array.length -1 ) {
stringBuffer.append(array[i]).append(",");
}else {
stringBuffer.append(array[i]).append("]");
}
}
System.out.println(stringBuffer);
7.StringBuffer截取字符串
StringBuffer sb = new StringBuffer()
sb.append("wangdns")
截取位置角标4及后面的字符串
String string = sb.substring(4)
System.out.println(string)
截取位置角标0到4的字符串
String string2 = sb.substring(0,4)
System.out.println(string2)
注释:截取规则 截头不截尾
运行结果
dns
wang
8.字符串做参数和String做参数的区别
public static void main(String[] args) {
StringBuffer stringBuffer = new StringBuffer("wanglong");
fun9(stringBuffer);
System.out.println(stringBuffer);
StringBuilder stringBuilder = new StringBuilder("王龙");
fun10(stringBuilder);
System.out.println(stringBuilder);
}
public static void fun9(StringBuffer stringBuffer) {
stringBuffer.append("znb");
}
public static void fun10(StringBuilder stringBuilder) {
stringBuilder.append("haha");
}
注释:
1. StringBuffer作为参数的时候,和引用数据类型一样
2.相当于是 地址的传递
3.字符串作为参数的时候 跟基本数据类型作为参数一样 相当于是值得传递
运行结果:
wanglongznb
王龙haha
结束:
欢迎浏览 点个赞呗