文章目录
- StringBuilder
- 代码
- 为什么操作字符串建议使用StringBuilder,而不是String?但String还是不可替代的
- StringBuffer
- 案例:接收字符串,返回String类型的[11,22]这种形式
- 代码
- StringJoiner
- 上面那个案例,用StringJoiner的方法解决
StringBuilder
跟String差不多,也是放字符串的。但是是可变的
下面的方法直接看代码
代码
package d13_StringBuilder;
/**
* @Author: ggdpzhk
* @CreateTime: 2024-08-24
*/
public class Test {
public static void main(String[] args) {
//两个构造方法
//StringBuilder sb= new StringBuilder("");
StringBuilder sb1= new StringBuilder("hello");
//拼接/添加数据 sb.append("world"); 做完操作,都是会返回本身 return this;
sb1.append("world");//String
System.out.println(sb1);
sb1.append('a');//char
System.out.println(sb1);
//支持链式编程
sb1.append(3).append(10.3);
System.out.println(sb1);
sb1.append(true);//boolean
System.out.println(sb1);
sb1.append(new StringBuilder("java"));//StringBuilder
System.out.println(sb1);
System.out.println("··················分隔线······························");
//将对象的内容反转 reverse() 调用这个方法以后本身就会反转
StringBuilder sb2= new StringBuilder("hello");
System.out.println(sb2);
StringBuilder sb2_re = sb2.reverse();
System.out.println(sb2);
System.out.println(sb2_re);
System.out.println("··················分隔线······························");
//返回对象的长度 length()
System.out.println(sb1.length());
System.out.println(sb2.length());
//转换为字符串 toString()
String s1 = sb1.toString();
String s2 = sb2.toString();
System.out.println(s1);
System.out.println(s2);
}
}
为什么操作字符串建议使用StringBuilder,而不是String?但String还是不可替代的
- 对于字符串相关的操作,如频繁的拼接、修改等,建议使用StringBuilder,效率更高。String是不变的,每次修改都是重新指向一个内存,效率低,浪费空间
- 注意: 如果操作字符串较少,或者不需要操作,以及定义字符串变量,还是建议使用String
StringBuffer
- StringBuffer的用法与StringBuilder用法完全一致
- 但SringBuffer线程安全,StringBuilder线程不安全
案例:接收字符串,返回String类型的[11,22]这种形式
代码
package d13_StringBuilder;
/**
* @Author: ggdpzhk
* @CreateTime: 2024-08-24
* 完成数组的遍历,并返回正确String格式 [11,22]
* 频繁地拼接,所以用StringBUilder
*/
public class Test3 {
public static void main(String[] args){
int[] arr = {11,22};
int[] arr2 = {11,22,33};
int[] arr3 = {};
int[] arr4 = null;
System.out.println(getArratData(arr));
System.out.println(getArratData(arr2));
System.out.println(getArratData(arr3));
System.out.println(getArratData(arr4));
}
public static String getArratData(int[] arr){
if (arr == null){
return null;
}
StringBuilder rs = new StringBuilder("[");
if (arr.length == 0 ){
return rs.append("]").toString();
}
for (int i = 0; i < arr.length-1; i++) {
rs.append(arr[i]+",");
}
rs.append(arr[arr.length-1]+"]");
return rs.toString();
}
}
StringJoiner
与也是放可变字符串的,好处就是在处理拼接字符串时更加方便
添加方法是add(),上面两个是append()
上面那个案例,用StringJoiner的方法解决
package d13_StringBuilder;
import java.util.StringJoiner;
/**
* @Author: ggdpzhk
* @CreateTime: 2024-08-24
* StringJoiner
*/
public class Test4 {
public static void main(String[] args) {
int[] arr = {11,22,33};
System.out.println(getArratData(arr));
}
public static String getArratData(int[] arr) {
if(arr == null){
return null;
}
if (arr.length == 0){
return "[]";
}
StringJoiner rs = new StringJoiner(",","[","]");
for(int i : arr){
//注意看这个传值,只能传字符串
// rs.add(String.valueOf(i));
rs.add(i+"");
}
return rs.toString();
}
}
StringJoiner在构造函数时三个参数 是 分隔符,首符号,尾符号
也可以只写间隔符