3 StringBuilder类
3.1 StringBuilder类概述
概述 : StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的,线程是不安全的
作用:提高字符串的操作效率
import domain.Student;
import java.util.Scanner;
public class Stringtest {
/*
String类常见构造方法:
public String() : 创建一个空白字符串对象,不含有任何内容
public String(char[] chs) : 根据字符数组的内容,来创建字符串对象
public String(String original) : 根据传入的字符串内容,来创建字符串对象
String s = “abc”; 直接赋值的方式创建字符串对象,内容就是abc
注意:
String这个类比较特殊, 打印其对象名的时候, 不会出现内存地址
而是该对象所记录的真实内容.
面向对象-继承, Object类
*/
public static void main(String[] args) {
//method();
long start = System.currentTimeMillis();
StringBuilder stringBuilder = new StringBuilder();
for (int i = 1; i <= 50000 ; i++) {
stringBuilder.append(i);
}
//System.out.println(stringBuilder);
long end = System.currentTimeMillis();
System.out.println(end-start); //4
}
public static void method(){
long start = System.currentTimeMillis();
System.out.println(start);
String s = "";
for (int i = 1; i <=50000 ; i++) {
s += i;
}
long end = System.currentTimeMillis();
System.out.println(end-start); ///4113
}
}
3.2 StringBuilder类和String类的区别
- **String类:**内容是不可变的
- **StringBuilder类:**内容是可变的
3.3StringBuilder类的构造方法
常用的构造方法
方法名 | 说明 |
---|---|
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 |
public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串对象 |
示例代码
StringBuilder stringBuilder = new StringBuilder();
System.out.println(stringBuilder); /// 为空 新建16长度 不包含任何内容
StringBuilder abc = new StringBuilder("abc"); //abc 根据字符串的内容,来创建可变字符串对象
System.out.println(abc);
3.4 StringBuilder常用的成员方法
-
添加和反转方法
方法名 说明 public StringBuilder append(任意类型) 添加数据,并返回对象本身 public StringBuilder reverse() 返回相反的字符序列
3.5StringBuilder和String相互转换【应用】
-
StringBuilder转换为String
public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
-
String转换为StringBuilder
public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(123);
stringBuilder.append("abc");
stringBuilder.append(true);
System.out.println(stringBuilder); //123abctrue 全部变成字符串数据
StringBuilder stringBuilder1 = new StringBuilder();
stringBuilder1.append("红色");
System.out.println(stringBuilder1); //红色
stringBuilder1.append("蓝色");
System.out.println(stringBuilder1); //红色蓝色
stringBuilder1.append("绿色");
System.out.println(stringBuilder1); //红色蓝色绿色
StringBuilder stringBuilder = new StringBuilder();
StringBuilder stringBuilder1 = stringBuilder.append("红色");
StringBuilder stringBuilder2 = stringBuilder.append("蓝色");
StringBuilder stringBuilder3 = stringBuilder.append("绿色");
System.out.println(stringBuilder1); //红色蓝色绿色
System.out.println(stringBuilder2); //红色蓝色绿色
System.out.println(stringBuilder3); //红色蓝色绿色
System.out.println(stringBuilder == stringBuilder2); // true
System.out.println(stringBuilder2 == stringBuilder3); // true
链式编程:如果一个方法返回的是对象类型,对象就可以继续向下调用方法
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("红色").append("蓝色").append("绿色");
System.out.println("反转前:"+stringBuilder); //反转前:红色蓝色绿色
stringBuilder.reverse();
System.out.println("反转后:"+stringBuilder); //反转后:色绿色蓝色红
System.out.println("sb中字符串的个数为:"+stringBuilder.length()); //6
String string = stringBuilder.toString();
System.out.println(string); //色绿色蓝色红