1.StringBuilder类的概念了解:
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。
先来说一下String类:
字符串是常量:它们的值在创建之后不能更改。
字符串的底层是是一个被final修饰的数组,不能改变,是一个常量。
private final byte[ ] value;
进行字符串的相加,内存中就会有多个字符串,占用空间多,效率低下。
String s = "a" + "b" + "c" = "abc";
"a","b","c" 3个字符串
String s : "a"+"b"+"ab" 1个字符串
“ab"+"c" "abc" 1个字符串
StringBuilder类
字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)
底层也是一个数组,但是没有被修饰,可以改变长度。
byte[] value = new byte[16];
"a"+"b"+"c" = "abc"
"a" | "b" | "c" |
0 1 2 3 4 5-16
StringBuilder在内存中始终是一个数组,占用空间太少,效率高,
如果超出了StringBuilder的容量,会自动的扩容。
2.StringBuilder类的构造方法。
java.lang.StringBuilder类:字符串缓冲区,可以提高字符串的效率。
构造方法:
StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为16个字符。
StringBuilder(String Str)构造一个字符串生成器,并初始化为指定的字符串内容。
public class Demo02StringBuilder {
public static void main(String[] args) {
//空参数构造方法
StringBuilder bu1 = new StringBuilder();
System.out.println("bu1 = " + bu1);//bu1:""
//带字符串的构造方法
StringBuilder bu2 = new StringBuilder("abc");
System.out.println("bu2 = " + bu2);//bu2:abc
}
}
3.StringBuilder的常用方法:
①public StringBuilder oppend(...): 添加任意类型数据字符串形式,并返回当前对象自身。
链式编程初试:
public class Demo03StringBuilder {
public static void main(String[] args) {
//创建StringBuilder对象
StringBuilder bu1 = new StringBuilder();
//使用append方法往StringBuilder中添加数据
//append方法返回的是this,调用方法的对bu,this == bu
StringBuilder bu2 = bu1.append("abc");
System.out.println(bu1); //"abc"
System.out.println(bu2); //"abc"
System.out.println(bu1 == bu2); //比较的是地址 true
//使用append方法无需接受返回值
bu1.append("abc");
bu1.append(1);
bu1.append(true);
bu1.append(9.9);
bu1.append("!");
bu1.append("中国人");
System.out.println(bu1); //abcabc1true9.9!中国人
/*
链式编程:方法返回值是一个对象,可以继续调用对象方法
*/
System.out.println("abc".toUpperCase().toLowerCase().toUpperCase().toLowerCase());
bu1.append("abc").append(1).append(false).append(8.8).append("中");
System.out.println(bu1); //abcabc1true9.9!中国人abc1false8.8中
}
}
②StringBuilder中的toString方法;
StringBuilder和String可以相互转换:
String -> StringBuilder: 可以使用Stringbuilder的构造方法
StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容。
StringBuilder -> String : 可以使用StringBuilder中的toString方法
public String toString():将当前StringBuilder对象转换为String对象。
public class Demo04StringBuilder {
public static void main(String[] args) {
//String -> StringBuilder
String str = "Jason";
System.out.println("str = " + str);
StringBuilder bu = new StringBuilder(str);
//往StringBuilder中添加数据
bu.append("你好");
System.out.println("bu = " + bu);
//StringBuilder -> String
String s = bu.toString();
System.out.println("s = " + s);
}
}