概述
StringBuilder是一个可变的字符串类,我们可以把它看成是一个容器。
作用
可以提高字符串的操作效率。
比如我拼接一个字符串,进行50000次,看看耗时需要多久,经过测试,是4秒多,如下
long start = System.currentTimeMillis(); String s = "1"; for (int i = 0; i < 50000; i++) { s += i; } System.out.println(s); long end = System.currentTimeMillis(); System.out.println(end - start); // 4818
使用StringBuilder改造后如下,效率有很大提高,仅需14毫秒
long start = System.currentTimeMillis(); StringBuilder s = new StringBuilder("1"); for (int i = 0; i < 50000; i++) { s.append(i); } System.out.println(s); long end = System.currentTimeMillis(); System.out.println(end - start); // 14
常见的构造方法
public StringBuilder() // 创建一个空白可变字符串对象,不含有任何内容 public StringBuilder(String str) // 根据字符串的内容,来创建可变字符串对象
常见的成员方法
append
添加数据,并返回对象本身,它这个方法接收的参数可以是任何数据类型,使用方式如下
StringBuilder sb = new StringBuilder(); sb.append("hello"); sb.append(" world "); sb.append(true); System.out.println(sb); // hello world true
由于append这个方法返回的是对象本身,因此它支持链式编程,如下
StringBuilder str = new StringBuilder(); str.append("红").append("黄").append("蓝"); System.out.println(str); // 红黄蓝
reverse
返回相反的字符序列,使用方式如下
StringBuilder sb = new StringBuilder("hello world"); sb.reverse(); System.out.println(sb); // dlrow olleh
length
返回长度(字符出现的个数)
StringBuilder sb = new StringBuilder("hello world"); System.out.println(sb.length()); // 11
toString
通过toString就可以实现把StringBuilder转换为String
StringBuilder sb = new StringBuilder("hello world"); String str = sb.toString(); System.out.println(str); // hello world
StringBuilder与String的区别
-
String:内容是不可变的
-
StringBuilder:内容是可变的