一.StringBuilder概述
(1)背景:如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费内存空间,而这种操作还不可避免。可以通过Java提供的StringBuilder类来解决这个问题。
(2)StringBuilder是一个可变的字符串类,可以把它看成是一个容器。这里的“可变”指的是StringBuilder对象中的内容是可变的。String对象中的内容不可变。
二.StringBuilder构造方法
方法名 | 说明 |
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 |
public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串对象 |
案例:
//创建一个空白可变字符串对象,不含有任何内容
StringBuilder sb=new StringBuilder();
案例:
//根据字符串的内容,来创建可变字符串对象
StringBuilder sb2=new StringBuilder("hello");
三.StringBuilder的添加和反转方法
方法名 | 说明 |
public StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reverse() | 返回相反的字符序列 |
四.StringBuilder和String相互转换
(1)StringBuilder转换为String
public String toString():通过toString()就可以实现把StringBuilder转换为String。
(2)String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把String转换为StringBuilder。
案例:
//StringBuilder转换为String
StringBuilder sb=new StringBuilder();
sb.append("hello");
// String s=sb; //此处会报错
//通过toString()就可以实现把StringBuilder转换为String
String s=sb.toString();
案例:
//String转换为StringBuilder
String s="hello";
// StringBuilder sb=s;//此处会报错
// 通过构造方法就可以实现把String转换为StringBuilder
StringBuilder sb=new StringBuilder(s);
五.拼接字符串案例
需求:定义一个方法,把int数组中的数据按照指定格式拼接成一个字符串,调用该方法,并在控制台输出结果。例如,数组为int[]arr={1,2,3};,执行方法后的输出结果为:[1,2,3]
//定义一个方法,用于把int数组中的数据按照指定格式拼接成一个字符串返回
public static String arraytoString(int[] arr){
//在方法中用StringBuilder按照要求进行拼接,并把结果转换为String返回
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]);
sb.append(", ");
}
}
sb.append("]");
String s=sb.toString();
return s;
}
public static void main(String[] args) {
//定义一个int类型的数组,用静态初始化完成数组数组元素的初始化
int[] arr={1,2,3};
//调用方法,用一个变量s接收结果
String s=arraytoString(arr);
System.out.println(s);
}
六.字符串反转
需求:定义一个方法,实现字符串反转。键盘录入一个字符串,调用该方法后,在控制台输出结果。例如,键盘录入abc,输出结果cba
//定义一个方法,实现字符串反转,返回值类型String,参数为String s
public static String myreverse(String s){
//在方法中用StringBuilder实现字符串的反转,并把结果转换为String返回
StringBuilder sb=new StringBuilder(s);
sb.reverse();
String ss=sb.toString();
return ss;
}
//键盘录入一个字符串,用Scanner实现
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line=sc.nextLine();
//调用方法,用一个变量s接收结果
String s=myreverse(line);