目录
一、StringBuilder
1. StringBuilder概述
可以看出一般方法效率很低,如果采用StringBuilder对象方法效率会高。 |
所以StringBuilder对象到底是什么呢?
线程不安全的类,能够被多次的修改并且不产生新的未使用对象。
StringBuilder可以看成是一个容器,创建之后里面的内容是可变的。
- 作用:提高字符串的操作效率。
StringBuilder原理图 见 JAVA基础 —— 字符串相关底层原理
一般方法 | 每次拼接结果最终产生很多无用字符串。 | |
StringBuilder | 将所有的信息都存入一个StringBuilder对象,不会产生无用字符串。 |
2. StringBuilder 构造方法
方法名 | 说明 |
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容。 |
public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串对象。 |
举例:
无参构造 StringBuilder sb = new StringBuilder();
有参构造 StringBuilder sb = new StringBuilder("abc");
3. StringBuilder 常用方法
方法名 | 说明 |
public StringBuilder append (任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reverse() | 反转容器中的内容 |
public int length() | 返回长度(字符出现的个数) |
public String toString() | 通过toString()就可以实现把StringBuilder转换为String |
练习:
public static void main(String[] args) {
// 1.创建StringBuilder对象
StringBuilder sb = new StringBuilder();
// 学习过面向对象,打印发现不是地址值
// 因为StringBuilder是java写好的类
// java在底层对它进行特殊处理 打印出来的其实是属性值
System.out.println(sb);
// 2.添加元素
sb.append(1);
sb.append(2.3);
sb.append(true);
System.out.println(sb);
// 2. 反转
sb.reverse();
System.out.println(sb);
// 3.获取长度
int len = sb.length();
System.out.println(len);
// 此时sb是一个存入数据的容器
// 要把StringBuilder变回字符串
String str = sb.toString();
// 转换成字符串后就可以使用字符串方法
System.out.println(str);
}
运行结果:
4. StringBuilder 练习
4.1 对称字符串
需求:键盘接受一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是。
- 对称字符串:123321、111
- 非对称字符串:123123
// Stingbuilder的应用场景
// 1.字符串的拼接
// 2.字符串的比较
public static void main(String[] args) {
// 1.键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = sc.next();
// 2.反转字符串
// 链式编程
String result =
new StringBuilder().append(str).reverse().toString();
// 3.比较
if (str.equals(result)) {
System.out.println("当前字符串是对称字符串");
} else {
System.out.println("当前字符串不是对称字符串");
}
}
4.2 拼接字符串
需求:定义一个方法,把 int数组中的数据按照指定的格式拼接成一个字符串返回。
调用该方法,并在控制台输出结果。
例如:数组为int[]arr = {1,2,3}; 执行方法后的输出结果为:[1,2,3]
public static void main(String[] args) {
//1.定义数组
int[ ] arr = {1,2,3};
//2.调用方法把数组变成字符串
String str = arrToString(arr);
System.out.println(str);
}
private static String arrToString(int[] arr) {
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length -1) {
sb.append(arr[i]);
}else {
sb.append(arr[i]).append(",");
}
}
sb.append("]");
return sb.toString();
}
二、 StringJoiner
让我们来稍微体验一下StringJoiner:
1. StringJoiner 概述
- StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。
- 作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。
- JDK8出现的
2. StringJoiner 构造方法
方法名 | 说明 |
public StringJoiner (间隔符号) | 创建一个StringJoiner对象,指定拼接时的间隔符号 |
public StringJoiner (间隔符号,开始符号,结束符号) | 创建一个StringJoiner对象,指定拼接时的间隔符号、开始符号、结束符号 |
3. StringJoiner 成员方法
方法名 | 说明 |
public StringJoiner add (添加的内容) | 添加数据,并返回对象本身 |
public int length0 | 返回长度(字符出现的个数) |
public String toString0 | 返回一个字符串(该字符串就是拼接之后的结果) |
练习:
public static void main(String[] args) {
// 1.创建一个对象 并指定中间的建个字符
StringJoiner sj = new StringJoiner("---");
// 2. 添加数据
sj.add("aaa").add("bbb").add("ccc");
System.out.println(sj); // aaa---bbb---ccc
// 3.创建另一个对象
StringJoiner sj2 = new StringJoiner(",", "[", "]");
// 4. 添加对象
sj2.add("aaa").add("bbb").add("ccc");
System.out.println(sj2); // [aaa,bbb,ccc]
// 5.打印长度
int len = sj2.length();
System.out.println(len); // 15
// 6.转换字符串
String str = sj2.toString();
System.out.println(str); // [aaa,bbb,ccc]
}
三、总结
1. String
表示字符串的类,定义了很多操作字符串的方法。2. StringBuilder
一个可变的操作字符串的容器。
可以高效的拼接字符串,还可以将容器里面的内容反转。3. StringJoiner
JDK8出现的一个可变的操作字符串的容器,可以高效,方便的拼接字符串。