如果对字符串进行拼接操作,每次拼接都会构建一个新的String对象,耗时且占用内存。可以通过StringBuilder
类来解决这个问题。
可变字符串
一个容器 内容可变
构造方法
无参构造:
public StringBuilder
StringBuilder sb = new StringBuilder();
System.out.println("sb:"+sb);
System.out.println("sb.length():"+sb.length());
有参构造:
public StringBuilder(String str)
StringBuilder sb2 = new StringBuilder("hello");
System.out.println("sb2:"+sb2);
System.out.println("sb2.length():"+sb2.length());
返回结果:
sb:
sb.length():0
sb2:hello
sb2.length():5
StringBuilder 添加和反转方法
//创建对象
StringBuilder sb = new StringBuilder();
public StringBuilder append
添加数据,并返回对象本身
sb.append("hello");
sb.append("world");
sb.append("java");
sb.append(100);
System.out.println("sb:"+sb); //sb:helloworldjava100
//链式编程
sb.append("hello").append("world").append("java");
System.out.println("sb:"+sb); //helloworldjava
public StringBuilder reverse()
返回相反的字符序列
//反转方法
sb.reverse();
System.out.println("sb:"+sb); //sb:avajdlrowolleh
StringBuilder 和 String相互转换
- StringBuilder转换为String
public String toString()
StringBuilder sb = new StringBuilder();
sb.append("hello");
String s = sb.toString();
System.out.println(s); //hello
- String 转换为StringBuilder
public StringBuilder(String s)
String a="hello";
StringBuilder sb = new StringBuilder(a);
System.out.println(sb);
案例:拼接字符串
package heima;
public class Demo04 {
public static void main(String[] args) {
int[] arr = {1, 2, 3};
//调用方法,用一个变量接受结果
String s = arrToString(arr);
//输出结果
System.out.println("s:" + s);
}
//定义方法:返回值类型 String 参数 int[] arr
public 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("]");
String s = sb.toString();
return s;
}
}
案例:字符串反转
package heima;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
//键盘录入字符串,用Scanner实现
Scanner sc = new Scanner(System.in);
System.out.println("请输入一串字符");
String line = sc.nextLine();
//调用方法 接受结果
String s=myReverse(line);
System.out.println("s:"+s);
}
//定义方法
public static String myReverse(String s){
//string --stringbuilder --reverse --string
// StringBuilder sb = new StringBuilder();
// sb.reverse();
// String ss=sb.toString();
// return ss;
return new StringBuilder(s).reverse().toString();
}
}