一:StringBuilder
1.StringBuilder代表可变字符串对象,相当于一个容器,它里面装的字符是可以改变的,就是用来操作字符串的。
2.好处:StringBuilder比String更适合做字符串的修改操作,效率会更高,代码也会更简洁。
3.使用
构造器:
StingBuilder() 创建一个空白的可变的字符串对象,不包含任何内容。
StingBuilder(String str) 创建一个指定字符串内容的可变字符串对象。
方法:
append(任意类型) 添加数据并返回StingBuilder对象本身。
reverse() 将对象内容反转。
length() 返回对象内容长度。
toString() 通过toString()就可以把StingBuilder转化为String。
示例:
public class Builder {
public static void main(String[] args) {
//StringBuilder s1 = new StringBuilder();
StringBuilder s1 = new StringBuilder("好好好");
//1.添加对象。
s1.append(12);
s1.append("王凯");
s1.append(98.5);
//可支持链式编程。
s1.append(87).append("蔡建宇").append(98.5);
//2.获取对象内容长度。
System.out.println(s1.length());
//3.对对象内容进行反转。
System.out.println(s1);
System.out.println(s1.reverse());
//4.将对象转化为String类型。
System.out.println(s1.toString());
}
}
结果:
二:为何操作字符串建议使用StingBuilder,而不用原来学过的String?
1.对于字符串相关的操作,如频繁的拼接,修改等,建议使用StingBuilder效率更高。
2.注意:如果操作字符串较少,或者不需要操作,以及定义字符串变量,建议还是用String。
示例:
public class BuilderTest {
public static void main(String[] args) {
StringBuilder s = new StringBuilder();
for (int i = 0; i <= 100000; i++) {
s.append("蔡建宇王凯");
}
System.out.println(s);
}
}
在此类操作下用StringBuilder下运行出结果的时间要远远快于使用String的时间。
三:StringBuffer
1.StringBuffer的用法与StringBuilder是一模一样的。
2.但StringBuiler是线程不安全的,StringBuffer是线程安全的。
四:StringJoiner
1.JDK8开始才有的,与StringBuilder一样,也是用来操作字符串的,也可以看成是一种容器,创建后里面的内容是可变的。
2.好处:不仅能提高字符串的操作效率,并且在有些场景下使用它操作字符串,代码会更简洁。
3.使用
构造器:
StringJoiner(间隔符号) 创建一个StringJoiner对象,指定拼接时的间隔符号。
StringJoiner(间隔符号,开始符号,结束符号) 创建一个StringJoiner对象,指定拼接时的间隔符号,开始符号,结束符号。
方法:
add(添加的内容) 添加数据,并返回对象本身。
length() 返回长度(字符出现的个数)。
toString() 返回一个字符串(该字符串就是拼接之后的结果)。
示例:
import java.util.StringJoiner;
public class Joiner {
public static void main(String[] args) {
//设置间隔。
//StringJoiner s = new StringJoiner(",");
//设置间隔并且设置开始时的符号与结束时的符号。
StringJoiner s = new StringJoiner(",","[","]");
//添加数据。
s.add("王凯");
s.add("蔡建宇");
s.add("马涌泰");
System.out.println(s);
//返回字符串中字符的个数。
System.out.println(s.length());
//返回一个字符串(该字符串就是拼接后的结果)。
System.out.println(s.toString());
int[] arr = {666,888,999};
System.out.println(getString(arr));
}
public static String getString(int[] a){
StringJoiner s1 = new StringJoiner(",","[","]");
for (int i = 0; i < a.length; i++) {
s1.add(a[i] + "");
}
return s1.toString();
}
}
结果:
好处示例:
public class Test {
public static void main(String[] args) {
int[] arr = {666,888,999};
System.out.println(getString(arr));
}
public static String getString(int[] a){
if (a == null){
return null;
}
StringBuilder s = new StringBuilder();
s.append("[");
for (int i = 0; i < a.length; i++) {
if (i == a.length - 1){
s.append(a[i]).append("]");
}else {
s.append(a[i]).append(',');
}
}
return s.toString();
}
}
public class Joiner {
public static void main(String[] args) {
int[] arr = {666,888,999};
System.out.println(getString(arr));
}
public static String getString(int[] a){
StringJoiner s1 = new StringJoiner(",","[","]");
for (int i = 0; i < a.length; i++) {
s1.add(a[i] + "");
}
return s1.toString();
}
}
两者结果相同但使用Joiner操作更为简洁。