StringBuilder
String拼接操作内存设定如下图
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是StringBuilder对象中的内容是可变的
String和StringBuilder区别
- String内容是不可变的
- StringBuilder内容是可变的
StringBuilder构造方法~~(见代码)~~
方法名 | 说明 |
---|---|
public StringBuilder() | 创建一个空白可变字符串对象,不含有任何内容 |
public StringBuilder(String str) | 根据字符串的内容,来创建可变字符串对象 |
StringBuilder的添加和反转方法~~(见代码)~~
方法名 | 说明 |
---|---|
public StringBuilder append(任意类型) | 添加数据,并返回对象本身 |
public StringBuilder reverse() | 返回相反的字符序列 |
StringBuilder和String相互转换
- 为什么要相互转换?
因为StringBuilder中有两个好用的方法append和revers,所以String对象想要调用就需要转换为StringBuilder,使用完以后需要转换回来。
StringBuilder转换为String
public String toString():通过toString()就可以实现把StringBuilder转换为String
String转换为StringBuilder
public StringBuilder(str):通过构造方法就可以实现把String转换为StringBuilder
代码
//创建一个空白可变字符串对象,不含有任何内容
StringBuilder sb = new StringBuilder();
System.out.println("sb:"+sb); //sb:
System.out.println("sb.length():"+sb.length()); //sb.length():0
//根据字符串的内容,来创建可变字符串对象
StringBuilder sb2 = new StringBuilder("StringBuilder");
System.out.println("sb2:"+sb2); //sb2:StringBuilder
System.out.println("sb2.length():"+sb2.length()); //sb2.length():13
//添加数据,并返回对象本身
sb2.append(123);
System.out.println(sb2); //StringBuilder123
//链式编程
sb.append(123).append(456).append(789);
System.out.println(sb); //123456789
//返回相反的字符序列
sb2.reverse();
System.out.println(sb2); //321redliuBgnirtS
//通过toString()就可以实现把StringBuilder转换为String
String str = sb2.toString();
System.out.println(str); //321redliuBgnirtS
//通过构造方法就可以实现把Stringr转换为StringBuilder
StringBuilder sb3 = new StringBuilder(str);