学习内容
StringBuffer类的概述
- 线程安全的可变字符序列
- StringBuffer和String的区别
- String是一个不可变的字符序列
- StringBuffer是一个可变的字符序列
StringBuffer类的构造方法
- public StringBuffer():无参构造方法
- public StringBuffer(int capacity):指定容量的字符串缓冲区对象
- public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
StringBuffer的方法
- public int capacity():返回当前容量。 理论值
- public int length():返回长度(字符数)。 实际值
StringBuffer和String的相互转换
- String – StringBuffer
- 通过构造方法
- 通过append()方法
- StringBuffer – String
- 通过构造方法
- 通过toString()方法
- 通过subString(0,length);
常见对象(把数组转成字符串)
用StringBuffer的功能实现
- 需求:把数组中的数据按照指定个格式拼接成一个字符串
- 例:int[] arr = {1,2,3};
输出结果:
“[1, 2, 3]”
- 例:int[] arr = {1,2,3};
StringBuilder类的概述
Java 5中被提出,用法同StringBuffer,区别线程不安全,效率更高
StringBuffer、StringBuilder的区别
- StringBuffer是jdk1.0版本的,线程安全,效率低;
- StringBuilder是jdk1.5版本的,线程不安全,效率高。
String、StringBuffer和StringBuilder的区别
- String可以赋空值,StringBuffer和StringBuilder不可;
- String值不可变,是一个不可变的字符序列,StringBuffer和StringBuilder可变,是可变的字符序列。
String的用法
按要求转换字符
- 需求:把一个字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
package com.briup.day15;
public class StringTest {
public static void main(String[] args) {
String as = "efwfqaedaqefqefdqA";
String init = (as.charAt(0) + "").toUpperCase();
String three = (as.charAt(2) + "").toUpperCase();
String last = (as.charAt(as.length() - 1) + "").toLowerCase();
String two = as.charAt(1) + "";
String first = init + two + three;
String ll = as.substring(3, as.length() - 1);
String over = first + ll + last;
System.out.println(over);
}
}
- 运行结果
把数组转成字符串
- 需求:把数组中的数据按照指定格式拼接成一个字符串
- 举例:
- int[] arr = {1,2,3};
- 输出结果:
- “[1, 2, 3]”
- 举例:
package com.briup.day15;
public class StringBufferTest {
public static void main(String[] args) {
int[] arr = {1,4,5,6};
StringBuffer buffer = new StringBuffer();
buffer.append("[");
for(int i : arr) {
buffer.append(i).append(",");
}
buffer.deleteCharAt(buffer.length()-1).append("]");
System.out.println(buffer);
}
}
- 运行结果
String的去除字符串两空格
- String trim()
package com.briup.day15;
public class StringTest {
public static void main(String[] args) {
String as = " ffg ";
as = as.trim();
System.out.println(as);//去掉首尾两端的空格
}
}
- 运行结果
StringBuffer的功能
StringBuffer的添加功能
- public StringBuffer append(String str):
- 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身。
public class StringBufferTest {
public static void main(String[] args) {
StringBuffer buffer = new StringBuffer();
buffer.append(true)//append追加的意思
.append("45455")
.append('a');
String string = buffer.toString();
System.out.println(string);
buffer.append("lisi");
String str1 = buffer.toString();
System.out.println(str1);
}
}
- 运行结果
- public StringBuffer insert(int offset,String str):
- 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
StringBuffer的删除功能
- public StringBuffer deleteCharAt(int index):
- 删除指定位置的字符,并返回本身
- public StringBuffer delete(int start,int end):
- 删除从指定位置开始指定位置结束的内容,并返回本身
StringBuffer的替换和反转功能
- StringBuffer的替换功能
- public StringBuffer replace(int start,int end,String str):
- 从start开始到end用str替换
- public StringBuffer replace(int start,int end,String str):
- StringBuffer的反转功能
- public StringBuffer reverse():
- 字符串反转
- public StringBuffer reverse():
StringBuffer的截取功能
- StringBuffer的截取功能
- public String substring(int start):
- 从指定位置截取到末尾
- public String substring(int start,int end):
- 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
- public String substring(int start):
- 注意事项
- 注意:返回值类型不再是StringBuffer本身