StringBuilder
StringBuilder原理
-
String
类- 字符串是常量,他们的值在创建之后不能更改
- 字符串的底层是一个被
final
修饰的数组,不能改变,是一个常量
-
private final byte[] value
-
进行字符串的相加,内存中就会有多个字符串,占用空间多,效率底下
StringBuilder
类- 字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以变化的字符串)
- 底层也是一个数组,但是没有被
final
修饰,可以改变长度 byte[] value = new byte[16]
StringBuilder
在内存中始终是一个数组,占用空间少,效率高- 如果超过了
StringBuilder
,会自动扩容
StringBuilder的构造方法
java.lang.StringBuilder
类:字符串缓冲区,可以提高字符串的效率- 构造方法:
StringBuilder()
构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符StringBuilder(String str)
构造一个字符串生成器,并初始化为指定的字符串内容。
演示
- 主类
package com.idayuanshuai.www.Demo5;
public class StringBuilderClass {
public static void main(String[] args) {
demo1();
}
public static void demo1(){
// 无参构造方法
StringBuilder builder = new StringBuilder();
System.out.println("builder值为"+builder);
// 有参构造方法
StringBuilder builder1 = new StringBuilder("have parameter method");
System.out.println("builder1值为"+builder1);
}
}
- 输出结果
builder值为
builder1值为have parameter method
StringBuilder常用方法
StringBuilder
常用的方法有2个:public StringBuilder append(...)
:添加任意类型数据的字符串形式,并返回当前对象自身。- 使用
append
方法往StringBuilder
中添加数据,append
方法返回的是this
- 使用
append
方法,无需接收返回值 - 因为
append
返回的是这个对象本身,所以可以采用链式编程。
- 使用
public String toString()
:将当前StringBuilder
对象转换为String对象。
演示
- 主类
package com.idayuanshuai.www.Demo5;
public class StringBuilderClass2 {
public static void main(String[] args) {
demo();
}
public static void demo(){
StringBuilder builder = new StringBuilder("i love you ");
builder.append("我的祖国 ");
System.out.println(builder);
builder.append(520).append(" ").append(1314);
System.out.println(builder);
}
}
- 输出结果
i love you 我的祖国
i love you 我的祖国 520 1314
StringBuilder的toString方法
StringBuilder
和String
可以相互转换:String->StringBuilder
:可以使用StringBuilder
的构造方法StringBuilder(String str)
: 构造一个字符串生成器,并初始化为指定的字符串内容。
StringBuilder->String
:可以使用StringBuilder
中的toString
方法public String toString()
:将当前StringBuilder
对象转换为String
对象
演示
- 主类
package com.idayuanshuai.www.Demo5;
public class StringBuilderClass3 {
public static void main(String[] args) {
demo1();
}
public static void demo1(){
String s = "whoami ";
StringBuilder builder = new StringBuilder(s);
builder.append("idys");
String s1 = builder.toString();
System.out.println(s1);
}
}
- 输出结果
whoami idys