一、StringBuilder
1、概述:是一个可变的字符串类,可以看做一个容器
package StringBuilder;
public class text {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("红色");
System.out.println(sb);
sb.append("蓝色");
System.out.println(sb);
sb.append("绿色");
System.out.println(sb);
}
}
2、作用:提高字符串的操作效率
使用String拼接数字所花时间如下:
package StringBuilder;
public class text {
public static void main(String[] args) {
//获取1970年1月1日0时0分0秒到当前时间的毫秒值
long start = System.currentTimeMillis();
String s = "";
for (int i = 1; i <= 50000; i++) {
s += i;
}
System.out.println(s);
long end = System.currentTimeMillis();
System.out.println(end - start);
}
}
使用StringBuilder拼接数字所花时间如下:
package StringBuilder;
public class text {
public static void main(String[] args) {
//获取1970年1月1日0时0分0秒到当前时间的毫秒值
long start = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 50000; i++) {
sb.append(i);
}
System.out.println(sb);
long end = System.currentTimeMillis();
System.out.println(end - start);
}
}
3、构造方法
在API中可以看到,共有四种,常用的是以下两种:
(1)public StringBuilder( ) 创建一个空白可变字符串对象,不含任何内容
(2)public StringBuilder(String str ) 根据字符串的内容,创建可变字符串对象
package StringBuilder;
public class text {
public static void main(String[] args) {
//public StringBuilder( ) 创建一个空白可变字符串对象,不含任何内容
StringBuilder sb = new StringBuilder();
System.out.println(sb);
//public StringBuilder(String str ) 根据字符串的内容,创建可变字符串对象
StringBuilder sb1 = new StringBuilder("abc");
System.out.println(sb1);
}
}
4、常用方法
(1)public StringBuilder append(任意类型) 添加数据,并返回对象本身
(2)public StringBuilder reverse( ) 返回相反的字符序列
(3)public int length( ) 返回长度(字符出现的个数)
(4)public String toString( ) 通过toString( )就可以实现把StringBuilder转换为String
package StringBuilder;
public class text {
public static void main(String[] args) {
//public StringBuilder append(任意类型) 添加数据,并返回对象本身
StringBuilder sb = new StringBuilder();
/*sb.append(123);
sb.append("abc");
sb.append(true);*/
//链式编程:如果一个方法返回的是对象类型,对象就可以继续向下调用方法
sb.append(123).append("abc").append(true);
System.out.println(sb);
//public StringBuilder reverse( ) 返回相反的字符序列
System.out.println("反转前:" + sb);
sb.reverse();
System.out.println("反转后:" + sb);
//public int length( ) 返回长度(字符出现的个数)
System.out.println(sb.length());
//public String toString( ) 通过toString( )就可以实现把StringBuilder转换为String
System.out.println(sb.toString());
}
}
案例:键盘接收一个字符串,判断是不是对称字符串,并在控制台打印是或不是
分析及代码如下:
1、键盘录入一个字符串,用Scanner实现
2、将键盘录入的字符串反转
3、使用反转后的字符串,和原字符串进行比对
4、如果相同,则输出是对称字符串,反之输出不是对称字符串
package StringBuilder;
import java.util.Scanner;
public class text对称字符串 {
public static void main(String[] args) {
//键盘接收一个字符串,判断是不是对称字符串,并在控制台打印是或不是
//1、键盘录入
Scanner sc = new Scanner(System.in);
System.out.println("输入一个字符串:");
String s = sc.next();
//2、将录入的字符串反转
//因为String没有reverse,所以要把字符串封装为StringBuilder,再调用reverse
StringBuilder sb = new StringBuilder(s);
sb.reverse();
//3、使用反转后的字符串与原来的字符串进行比对
//注意s和sb类型不同,直接相比会出错,要将sb转化为字符串类型
if (s.equals(sb.toString())) {
System.out.println("是对称字符串");
} else {
System.out.println("不是对称字符串");
}
}
}
5、StringBuilder和String 相互转化
1.StringBuilder转换为String
public String toString( ): 通过 toString( )就可以实现把StringBuilder转换为String
2.String 转换为StringBuilder
public String Builder(String s): 通过构造方法就可以实现把String转换为StringBuilder
案例:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。 例如,数组为int[]arr={1,2,3};执行方法后的输出结果为:[1,2,3]
分析及代码如下:
1.定义一个int类型的数组,用静态初始化完成数组元素的初始化
2.定义一个方法,返回值类型String,参数列表int[] arr
3.在方法中用StringBuilder按照要求进行拼接,并把结果转成String 返回
4.调用方法,用一个变量接收结果
5.输出结果
package StringBuilder;
public class text {
public static void main(String[] args) {
/*需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回,调用该方法,并在控制台输出结果。
例如,数组为int[]arr={1,2,3};执行方法后的输出结果为:[1,2,3]*/
//1.定义一个int类型的数组,用静态初始化完成数组元素的初始化
int[] arr = {1, 2, 3};
//4.调用方法,用一个变量接收结果
String s = arraytoString(arr);
//5.输出结果
System.out.println(s);
}
//2.定义一个方法,返回值类型String,参数列表int[] arr
public static String arraytoString(int[] arr) {
//3.在方法中用StringBuilder按照要求进行拼接,并把结果转成String 返回
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
sb.append(arr[i]).append("]");
} else {
sb.append(arr[i]).append(",");
}
}
return sb.toString();
}
}